【发布时间】:2022-01-01 22:19:52
【问题描述】:
我正在尝试在一个类中创建一个多提供者。但它与在材料应用程序上方的 main.dart 中声明 multiproviders 不同。
class Chat extends StatelessWidget {
const Chat({ Key? key }) : super(key: key);
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider<ChatProvider>( create: (context) => ChatProvider()),
ChangeNotifierProvider<MessageProvider>( create: (context) => MessageProvider()),
],
child: ChatMainScreen(),
// MaterialApp(
// debugShowCheckedModeBanner: false,
// home: ChatMainScreen(),
// )
);
}
}
我正在从 ChatMainScreen 导航到另一个屏幕到出现此问题的新屏幕 (ChatRoom)。(ChatMainScreen => ChatRoom)
如果我用另一个材料应用程序包装我的 ChatMainScreen,它似乎可以工作。但是在材料应用程序中可以有另一个材料应用程序吗?。
此外,ChatMainScreen 路由返回的材质应用父级也无法正常工作。如果我从 ChatRoom 屏幕按下返回按钮,而不是弹出回 chatMainScreen,它会弹出到我推送到 ChatMainScreen 的屏幕
【问题讨论】:
-
你在哪里打电话给Provider.of??它可能在另一条路线上吗?
-
是的,在推送的新路由上调用它
-
是的,要在许多路线上使用提供者,您必须将多提供者放在材料应用程序之上,因为不同的路线是材料应用程序的子级。
-
那么,那么如何解决当我按下返回按钮时它会从主屏幕弹出而不是返回上一个路线的问题?那么在另一个材质应用中使用材质应用呢,这是一个好方法吗?
-
使用多个
MaterialApp可能是个坏主意,它会产生意想不到的后果。为什么不将提供者作为值传递给新路由?如果您没有提供者,您会怎么做?
标签: flutter dart flutter-provider