【发布时间】:2020-03-11 20:13:39
【问题描述】:
我发现很多解决方案在 stateless 和 stateful 小部件之间传递数据,但在 之间没有传递数据>两个有状态的小部件
编辑:我编辑了代码以显示更多细节
主页
class MainPage extends StatefulWidget {
final String name;
MainPage({Key key, this.name}) : super(key: key);
@override
_MainPageState createState() => _MainPageState();
}
class _MainPageState extends State<MainPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text("Text from 2nd page -> "), //should return "Text from 2nd page -> BATMAN"
FloatingActionButton(
child: Icon(Icons.android),
onPressed: (){
Navigator.push(context, MaterialPageRoute(
builder: (context) => SecondPage()
));
},
),
],
),
),
);
}
}
第二页:
class SecondPage extends StatefulWidget {
SecondPage({Key key}) : super(key: key);
@override
_SecondPageState createState() => _SecondPageState();
}
class _SecondPageState extends State<SecondPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
...
Text("I choose ${_selectedMethod.name}"), // this returned "I choose BATMAN"
...
}
所以基本上我想将${_selectedMethod.name} 从 2ndPage 传递到 MainPage。对不起,我解释得太差了:(
【问题讨论】:
-
两个页面如何相互连接?您使用 Navigator.push() 从一个导航到另一个?或者例如它们是来自更高页面的标签吗?哪个变量包含您要在它们之间传递的信息?请编辑您的问题以包含这些详细信息。
-
使用 Navigator MaterialPageRoute,您可以创建第二个有状态的并将值作为最终值传递给使用。
-
@Naslausky 抱歉,我编辑了我的问题
-
我从你的问题中了解到的是,你点击 MainPage 中的 android 按钮,然后它转到 SecondPage,然后你按回,它来到 Mainpage 与 batman 字符串对吗?
-
@BalajiRamadoss 是的,但它不需要弹回主页。我希望它只停留在第二页,直到我按下后退按钮