键入另一个文本字段时,动态文本字段数据将丢失

像龙一样

我想为用户添加信息创建一个动态文本字段。
但是我不知道为什么用户首先输入房间页面中的某些内容房间页面

然后转到楼层页面并输入 楼层页面

返回会议室页面,输入的数据将丢失。 在此处输入图片说明

我想知道如何防止动态文本字段数据丢失。非常感谢。

这是源代码,这是“选项卡”页面:

import "package:flutter/material.dart";
import './tab1.dart';

class TabPage extends StatefulWidget {
  @override
  _TabPage createState() => _TabPage();
}

class _TabPage extends State<TabPage> with SingleTickerProviderStateMixin {
    TextEditingController doorNumberController = new TextEditingController();
  List<Widget> _checkingForm = <Widget>[];
  final List<Tab> myTabs = <Tab>[
    Tab(text: 'Room'),
    Tab(text: 'Floor'),
  ];

  int _checkingIndex = 1;
  void _addChecking() {
    _checkingForm = List.from(_checkingForm)
      ..add(Tab1());

    setState(() {
      _checkingIndex += 1;
    });
  }

  TabController _tabController;

  @override
  void initState() {
    super.initState();
    _tabController = TabController(vsync: this, length: myTabs.length);
    _addChecking();
  }

 @override
 void dispose() {
   _tabController.dispose();
   super.dispose();
 }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        bottom: TabBar(
          controller: _tabController,
          tabs: myTabs,
        ),
      ),
      body: TabBarView(
        controller: _tabController,
            children: [
              ListView(
                children: <Widget>[  
                  Text('Add the room number',textAlign: TextAlign.center,style: TextStyle(
                      color: Colors.black,
                      fontWeight: FontWeight.w900,
                      fontSize: 25),
                  ),
                  IconButton(
                    icon: Icon(Icons.add_circle,color: Colors.lightBlue),
                    onPressed: () {
                        _addChecking();
                      },
                    ),   
                    Column(
                      children:_checkingForm,
                  ),     
                ]
              ),
              ListView(
                  children: <Widget>[
                    Text('Floor:', textAlign: TextAlign.left,style: TextStyle(
                      color: Colors.black,
                      fontWeight: FontWeight.w900,
                      fontSize: 25),
                    ),
                      Container(              
                            width: 250.0,
                            child: TextField(
                              controller: doorNumberController,
                              decoration: InputDecoration(
                                border: OutlineInputBorder(),
                                labelText: 'Floor:',
                          ),
                        ),
                      ),  
                    ]
              ),
            ]
      ),
    );
  }
}

这是动态文本字段页面:

import 'dart:convert';
import 'package:http/http.dart' as http;
import "package:flutter/material.dart";

class Tab1 extends StatefulWidget {
  _Tab1 createState() => _Tab1();
  
}

class _Tab1 extends State<Tab1> {
  TextEditingController doorNumberController = new TextEditingController();
  @override
  Widget build(BuildContext context) {
      return Card(
        child: Column(
          children: <Widget>[
                Row( 
                  children: <Widget>[
                    Text('Room:', textAlign: TextAlign.left,style: TextStyle(
                      color: Colors.black,
                      fontWeight: FontWeight.w900,
                      fontSize: 25),
                    ),
                      Container(              
                            width: 250.0,
                            child: TextField(
                              controller: doorNumberController,
                              decoration: InputDecoration(
                                border: OutlineInputBorder(),
                                labelText: 'Room number:',
                          ),
                        ),
                      ),  
                    ]
                  ),
          ]
        )
      );
  }

}
像龙一样

该解决方案是非常简单......只要添加with AutomaticKeepAliveClientMixin<Tab1>bool get wantKeepAlive => true;可以解决的。
谢谢Aldy。

import 'dart:convert';
import 'package:http/http.dart' as http;
import "package:flutter/material.dart";

class Tab1 extends StatefulWidget {

  String input;
  @override
  _Tab1 createState() => _Tab1();
  
}

class _Tab1 extends State<Tab1> with AutomaticKeepAliveClientMixin<Tab1> {
  TextEditingController doorNumberController = new TextEditingController();
  void initState() {
    super.initState();
    //doorNumberController.text=input;
  }
  @override
  Widget build(BuildContext context) {
      return Card(
        child: Column(
          children: <Widget>[
                Row( 
                  children: <Widget>[
                    Text('Room:', textAlign: TextAlign.left,style: TextStyle(
                      color: Colors.black,
                      fontWeight: FontWeight.w900,
                      fontSize: 25),
                    ),
                      Container(              
                            width: 250.0,
                            child: TextField(
                              controller: doorNumberController,
                              decoration: InputDecoration(
                                border: OutlineInputBorder(),
                                labelText: 'Room number:',
                          ),
                        ),
                      ),                  
                    ]
                  ),
                Row(
                  children:<Widget>[
                    IconButton(
                      icon: const Icon(Icons.save),
                      color: Colors.blue,
                        onPressed: () {
                          print(doorNumberController.text);
                      },
                    ),      
                  ]
                ) 
          ]
        )
      );
  }
  bool get wantKeepAlive => true;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将文本字段数据传递到另一个视图

来自分类Dev

在另一个文本字段中键入内容时启用文本字段

来自分类Dev

将一个文本字段移动到另一个文本字段时键盘熄灭

来自分类Dev

如何从另一个文本字段清除一个文本字段?

来自分类Dev

获取另一个文本字段(liferay aui)的文本字段的价值

来自分类Dev

访问另一个类的文本字段

来自分类Dev

在需要填充一个文本字段并同时填充另一个文本字段之后动态执行函数

来自分类Dev

如何从Java中的另一个类获取文本字段的数据?

来自分类Dev

从表视图之外的另一个视图中的自定义单元格检索文本字段数据

来自分类Dev

更改另一个类中引用的文本字段的值将导致错误

来自分类Dev

如何以编程方式在ios中自动将光标从一个文本字段移动到另一个文本字段?

来自分类Dev

如何在反应中使用实质性UI将一个文本字段的值转移到另一个文本字段?

来自分类Dev

使用条件语句为依赖于另一个文本字段的文本字段分配值

来自分类Dev

根据另一个文本字段为文本字段分配匹配百分比

来自分类Dev

在另一个文本字段中输入数字后,以html格式显示其他文本字段

来自分类Dev

使用条件语句为依赖于另一个文本字段的文本字段分配值

来自分类Dev

如何根据 Flutter 中另一个文本字段的值自动设置文本字段的值?

来自分类Dev

从一个文本字段移动到另一个

来自分类Dev

从另一个 viewController 访问文本字段文本

来自分类Dev

应用split and join功能并替换单词时,将文本字段的输出值输出到另一个字段

来自分类Dev

在几秒钟后使用AS3在Flash中将文本从一个动态文本字段捕获到另一个动态文本字段

来自分类Dev

从ViewController中的文本字段获取输入并在另一个类中使用

来自分类Dev

java在另一个类中编辑文本字段

来自分类Dev

希望从程序中的另一个.java文件访问文本字段

来自分类Dev

Yii从另一个模型预加载表单文本字段

来自分类Dev

单击取消按钮显示另一个文本字段的值

来自分类Dev

将在文本字段中输入的值转移到另一个angularJs

来自分类Dev

我如何从reactJS另一个模块的文本字段中获取值

来自分类Dev

从另一个类调用按钮或文本字段| 安卓

Related 相关文章

  1. 1

    将文本字段数据传递到另一个视图

  2. 2

    在另一个文本字段中键入内容时启用文本字段

  3. 3

    将一个文本字段移动到另一个文本字段时键盘熄灭

  4. 4

    如何从另一个文本字段清除一个文本字段?

  5. 5

    获取另一个文本字段(liferay aui)的文本字段的价值

  6. 6

    访问另一个类的文本字段

  7. 7

    在需要填充一个文本字段并同时填充另一个文本字段之后动态执行函数

  8. 8

    如何从Java中的另一个类获取文本字段的数据?

  9. 9

    从表视图之外的另一个视图中的自定义单元格检索文本字段数据

  10. 10

    更改另一个类中引用的文本字段的值将导致错误

  11. 11

    如何以编程方式在ios中自动将光标从一个文本字段移动到另一个文本字段?

  12. 12

    如何在反应中使用实质性UI将一个文本字段的值转移到另一个文本字段?

  13. 13

    使用条件语句为依赖于另一个文本字段的文本字段分配值

  14. 14

    根据另一个文本字段为文本字段分配匹配百分比

  15. 15

    在另一个文本字段中输入数字后,以html格式显示其他文本字段

  16. 16

    使用条件语句为依赖于另一个文本字段的文本字段分配值

  17. 17

    如何根据 Flutter 中另一个文本字段的值自动设置文本字段的值?

  18. 18

    从一个文本字段移动到另一个

  19. 19

    从另一个 viewController 访问文本字段文本

  20. 20

    应用split and join功能并替换单词时,将文本字段的输出值输出到另一个字段

  21. 21

    在几秒钟后使用AS3在Flash中将文本从一个动态文本字段捕获到另一个动态文本字段

  22. 22

    从ViewController中的文本字段获取输入并在另一个类中使用

  23. 23

    java在另一个类中编辑文本字段

  24. 24

    希望从程序中的另一个.java文件访问文本字段

  25. 25

    Yii从另一个模型预加载表单文本字段

  26. 26

    单击取消按钮显示另一个文本字段的值

  27. 27

    将在文本字段中输入的值转移到另一个angularJs

  28. 28

    我如何从reactJS另一个模块的文本字段中获取值

  29. 29

    从另一个类调用按钮或文本字段| 安卓

热门标签

归档