Flutter 颤振:传递到下一个屏幕的变量变为null
我想将一个变量传递到下一个屏幕,但它在下一个屏幕中变为Flutter 颤振:传递到下一个屏幕的变量变为null,flutter,Flutter,我想将一个变量传递到下一个屏幕,但它在下一个屏幕中变为null。我怎么了?我的代码如下 第一屏。省道 onTap: () { print(doc); // Prints out Instance of `DocumentSnapshot` on log Navigator.of(context).pushNamed('/second', arguments: doc); }, class SecondScreen exten
null
。我怎么了?我的代码如下
第一屏。省道
onTap: () {
print(doc); // Prints out Instance of `DocumentSnapshot` on log
Navigator.of(context).pushNamed('/second', arguments: doc);
},
class SecondScreen extends StatefulWidget {
final DocumentSnapshot doc;
SecondScreen({
this.doc,
});
@override
State<StatefulWidget> createState() {
return _SecondScreenStateState();
}
}
class _SecondScreenState extends State<SecondScreen> {
@override
void initState() {
super.initState();
print(widget.doc); // Prints out null here
}
第二个屏幕。省道
onTap: () {
print(doc); // Prints out Instance of `DocumentSnapshot` on log
Navigator.of(context).pushNamed('/second', arguments: doc);
},
class SecondScreen extends StatefulWidget {
final DocumentSnapshot doc;
SecondScreen({
this.doc,
});
@override
State<StatefulWidget> createState() {
return _SecondScreenStateState();
}
}
class _SecondScreenState extends State<SecondScreen> {
@override
void initState() {
super.initState();
print(widget.doc); // Prints out null here
}
class SecondScreen扩展StatefulWidget{
最终文件;
第二屏({
这个.doc,
});
@凌驾
状态createState(){
返回_SecondScreenStateState();
}
}
类_SecondScreenState扩展状态{
@凌驾
void initState(){
super.initState();
打印(widget.doc);//此处打印为空
}
我尝试了其他数据类型,但在下一个屏幕中所有变量都变为null。您必须像这样传递参数:
final doc = ModalRoute.of(context).settings.arguments as String;
Navigator.of(context).pushNamed('/second',参数:doc);
for your为true,但使用该方法返回当前路由,参数如下:
final doc = ModalRoute.of(context).settings.arguments as String;
我假设
doc
是字符串。如果您在小部件(屏幕)之间共享数据试着看看InheritedWidget。看看。你也可以看看状态管理软件包,比如provider,它很容易理解,或者bloc。从长远来看,它们会帮你节省时间。你能为DocumentSnapshot类文件插入代码吗?谢谢,它工作得很好!简单问一下,最终字符串变量和able=…
和最终变量=…作为字符串
?我认为没有区别,在dart中可以定义变量没有类型。