gpt4 book ai didi

flutter - 允许 'context'移至不同的Dart文件

转载 作者:行者123 更新时间:2023-12-03 04:00:11 29 4
gpt4 key购买 nike

当前有一个Navigator.push(context,route),但是上下文部分返回了错误,在尝试调试后,我发现问题是因为我在调用一个函数而不是直接将home设置为widget树。但是现在我不确定如何获取上下文以与构建进行通信?不知道这是否得到了很好的解释,但希望查看代码可以澄清我的问题。

在mainview()函数中传递“context”,将获得运行时错误。

class _MyAppmain extends State<MyApp> {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
//theme data
primaryColor: Color(0xffA3E4D7),
accentColor: Color(0xffECF0F1),
fontFamily: 'Montserrat'),
home: mainView());//this is where the function in the other file is called
}
}

第二档:
floatingActionButton: FloatingActionButton(
child: Icon(Icons.add),
onPressed: () {
Navigator.push(context, NewEventTransition());//the issue
},
mini: true,
),

这是文件的很小一部分,但我认为应该足够了。

希望能够通过函数在两个文件之间获取上下文,但是却出现了错误。

最佳答案

Navigator是一个类似于Scaffold的小部件,但更靠近小部件树的顶部。
调用Navigator.of(context)将获得上下文小部件树中的导航器小部件。
[按下晶圆厂时,小部件树中肯定有一个导航器。也许每个上下文只能在窗口小部件树中找到深度较低的窗口小部件]

一种解决方法是使用命名的路由生成器而不是函数调用:

class _MyAppmain extends State<MyApp> {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
//theme data
primaryColor: Color(0xffA3E4D7),
accentColor: Color(0xffECF0F1),
fontFamily: 'Montserrat'),
initialRoute: '/',
routes: {
'/' : (context) => mainView(context),
},
);
}
}

关于flutter - 允许 'context'移至不同的Dart文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57898825/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com