将文本字段的插入数据放入上一屏幕的列表视图中

问题描述 投票:0回答:1

我是新手,我正在尝试将插入文本字段中的数据放入列表中,并将此列表显示在上一个屏幕中。

我在第一个屏幕上做了两个屏幕,我们导航到第一个屏幕,在第二个屏幕上,我有3个来自女巫的文本字段,我想将数据提取到新列表中,并在上一个屏幕中显示此列表,如果有人得到我试图说请先帮助谢谢。

flutter dart flutter-layout
1个回答
0
投票
class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  String returned = 'Retuned text will appear here..';
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      appBar: AppBar(
        title: Text('Returning Data Demo'),
      ),
      body: Center(
          child: Column(children: [
        Text(returned, style: TextStyle(color: Colors.black)),
        RaisedButton(
          onPressed: () async {
            var someValue = await Navigator.of(context)
                .push(MaterialPageRoute(builder: (con) => SelectionScreen()));
            print(someValue);
            if (someValue != null && someValue.toString().isNotEmpty) {
              setState(() {
                returned = someValue.toString();
              });
            }
          },
          child: Text('Get Values', style: TextStyle(color: Colors.white)),
        )
      ])),
    );
  }
}

class SelectionScreen extends StatefulWidget {
  @override
  _SelectionScreenState createState() => _SelectionScreenState();
}

class _SelectionScreenState extends State<SelectionScreen> {
  TextEditingController c1, c2, c3;
  //and son on....

  @override
  void initState() {
    super.initState();
    c1 = TextEditingController();
    c2 = TextEditingController();
    c3 = TextEditingController();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Pick an option'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            TextField(
              controller: c1,
            ),
            TextField(
              controller: c2,
            ),
            TextField(
              controller: c3,
            ),
            Padding(
              padding: const EdgeInsets.all(8.0),
              child: RaisedButton(
                onPressed: () {
                  // Close the screen and return "Nope!" as the result.
                  Navigator.pop(context, [c1.text, c2.text, c3.text]);
                },
                child: Text('Submit'),
              ),
            )
          ],
        ),
      ),
    );
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.