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时,应用程序将返回上一屏幕第一类,那么当应用程序返回上一屏幕时,我如何在第一类中获取您的_值?请发布您的完整代码。你不能正确地做这件事。