在 Flutter 中将数据从一个屏幕传递到另一个屏幕是 null
Posted
技术标签:
【中文标题】在 Flutter 中将数据从一个屏幕传递到另一个屏幕是 null【英文标题】:Passing data from one screen to other screen in Flutter is null 【发布时间】:2019-10-27 23:29:25 【问题描述】:我有两个屏幕,从一个我想将标题字符串传递到另一个屏幕。此标题可以登录或注册,在第一个屏幕中预先确定。我尝试过的:
Container(
child: RaisedGradientButton(
onPressed: ()
print('Login clicked');
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
MyApp(
formMode: FormMode.LOGIN,
screenTitle: "Login",
)
),
);
,
textButton: "Login",
height: 55,
width : 200.0,
buttonTitleColor: Colors.white,
buttonBackgroundColor: Colors.red,
)
),
下面是带有初始化步骤的第二个屏幕:
enum FormMode LOGIN, SIGNUP
void main()
runApp(
MaterialApp(
home: StatelessLanding(),
),
);
class MyApp extends StatelessWidget
// In the constructor, require a Todo
final FormMode formMode;
final String screenTitle;
MyApp(Key key, @required this.formMode, @required this.screenTitle)
: super(key: key);
@override
Widget build(BuildContext context)
return MyAppStateFul();
class _MyAppStateFulState extends State<MyAppStateFul>
FormMode formMode;
String screenTitle;
_MyAppStateFulState(FormMode formMode, String screenTitle)
this.formMode = formMode;
this.screenTitle = screenTitle;
这是我使用屏幕标题的地方:
@override
Widget build(BuildContext context)
var screenTitle = "Login";
print('screen title is $widget.screenTitle');
print('screen title is $this.screenTitle');
print('screen title is $screenTitle');
请高手帮帮我。 谢谢
【问题讨论】:
我觉得本页的答案可以帮到你***.com/questions/50818770/… 我觉得这个页面上的答案***.com/questions/50818770/…可以帮到你 【参考方案1】:代码有点难以理解,但您似乎忘记将 screenTitle
从 MyApp
类传递给 MyAppStateful
小部件。
在您上面列出的代码中,您有以下无状态小部件:
class MyApp extends StatelessWidget
// In the constructor, require a Todo
final FormMode formMode;
final String screenTitle;
MyApp(Key key, @required this.formMode, @required this.screenTitle) : super(key: key);
@override
Widget build(BuildContext context)
return MyAppStateFul();
在我看来,您似乎必须将 screenTitle
传递给 MyAppStateFul
构造函数才能使其在您的有状态小部件中可用,如下所示:
@override
Widget build(BuildContext context)
return MyAppStateFul(screenTitle);
当然,这还需要您更改 MyAppStateFul
constructor 以接受 screenTitle
参数(如果它尚未接受)。
我认为这应该可以为您解决问题。
【讨论】:
以上是关于在 Flutter 中将数据从一个屏幕传递到另一个屏幕是 null的主要内容,如果未能解决你的问题,请参考以下文章
如何在颤动中将列表数据从一个屏幕传递到另一个屏幕(StatefulWidget)