【发布时间】:2022-01-12 12:53:04
【问题描述】:
我有一个在不同页面中使用的提供程序,由Navigator 管理
我在第一个路由器中创建了提供程序:
class FirstPageView extends StatelessWidget {
static MyProvider myProvider = MyProvider();
const FirstPageView({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider<FirstPageRouter>(
create: (context) => FirstPageRouter()),
ChangeNotifierProvider<MyProvider>(
create: (context) => myProvider,
),
],
child: Consumer2<FirstPageRouter, MyProvider>(
builder: (context, model, myProvider, child) => Scaffold(
appBar: MyAppBar(model),
body: Body(model, myProvider),
),
),
);
}
}
我无法重新创建 MyProvider。此提供程序连接到硬件端口,我无法在每个页面中重新创建它。所以我在下一页使用了相同的提供程序:
class SecondPageView extends StatelessWidget {
static MyProvider myProvider = MyProvider();
const SecondPageView({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider<SecondPageRouter>(
create: (context) => SecondPageRouter()),
ChangeNotifierProvider<MyProvider>(
create: (context) => FirstPageView.myProvider,
),
],
child: Consumer2<SecondPageRouter, MyProvider>(
builder: (context, model, myProvider, child) => Scaffold(
appBar: MyAppBar(model),
body: Body(model, myProvider),
),
),
);
}
}
现在我的问题是,当我返回并在每个页面中弹出导航器 Navigator.of(context).pop(); 时,Flutter 会处理 FirstPageView.myProvider。如何防止提供程序被丢弃并在所有页面中继续使用它?
【问题讨论】:
标签: flutter dispose provider navigator