Dart 返回上一屏幕时如何捕捉值?

Dart 返回上一屏幕时如何捕捉值?,dart,flutter,Dart,Flutter,这是我的第二节课 class SecondClass extends StatefulWidget { _SecondClassState createState() => _SecondClassState(); } class _SecondClassState extends State<SecondClass> { @override Widget build(BuildContext context) { Return Container(

这是我的第二节课

class SecondClass extends StatefulWidget {
   _SecondClassState createState() => _SecondClassState();
}

class _SecondClassState extends State<SecondClass> {
  @override
  Widget build(BuildContext context) {
    Return Container(
      RaisedButton(
       onPressed: Navigator.of(context).pop('lorem ipsum),
       child: Text('Back and get data')
      )
    );
  }
}
这是我的第一节课

class FirstClass extends StatefulWidget {
  _FirstClassState createState() => _FirstClassState();
}

class _FirstClassState extends State<FirstClass> {
   @override
   Widget build(BuildContext context) {
     Return Container(
       // show data here
     );
  }
}
如何获取lorem ipsum的字符串并在第一个类中显示它,我应该在哪里放置代码来获取该字符串

Navigator.of(context).push(MaterialPageRoute(builder: (context) => SecondClass())).then((value) {
  // value is lorem ipsum
});
当您导航到第二个类时,应该在第一个类中使用此选项

完整解决方案:

class _FirstClassState extends State<FirstClass> {
  String _string = "";

  @override
  Widget build(BuildContext context) {
    return RaisedButton(
      child: Text("Go"),
      onPressed: () {
        Navigator.of(context).push(MaterialPageRoute(builder: (context) => SecondClass())).then(
          (value) {
            setState(() {
              _string = value; // lorem ipsum
            });
          },
        );
      },
    );
  }
}
您可以在屏幕截图中看到,无论在第二个屏幕中单击什么项目,它都会被发送回第1页,并且按钮会显示相同的项目

下面是基本实现的完整代码

void main() {
  runApp(MaterialApp(home: Page1()));
}

class Page1 extends StatefulWidget {
  @override
  _Page1State createState() => _Page1State();
}

class _Page1State extends State<Page1> {
  String _response = "";

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("Page 1")),
      body: Center(
        child: RaisedButton(
          child: Text("Go to Page 2"),
          onPressed: () {
            Navigator.push(context, MaterialPageRoute(builder: (context) => Page2())).then((value) {
              setState(() {
                _response = value; // you receive here
              });
            });
          },
        ),
      ),
    );
  }
}

class Page2 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("Page 2")),
      body: ListView.builder(
        itemCount: 20,
        itemBuilder: (c, i) {
          return ListTile(
            title: Text("Item ${i}"),
            onTap: () {
              Navigator.pop(context, "Item ${i}"); // what you pass here
            },
          );
        },
      ),
    );
  }
}

当你导航到第二个类时,你应该输入代码,就像按下按钮一样谢谢你的答案,我去我的第二个类使用onPressed:{return SecondClass;}在第二个类中我有一个列表,我想当我按下该列表时,应用程序返回到上一个屏幕并显示我按下的数据。在第二个类中,当您单击列表时,可能会使用ListTile,在其onTap方法中,使用Navigator.popcontext,即您的_值。易于理解的好吧,我照你写的做了。当我按ListTile时,应用程序将返回上一屏幕第一类,那么当应用程序返回上一屏幕时,我如何在第一类中获取您的_值?请发布您的完整代码。你不能正确地做这件事。