【发布时间】:2019-11-23 08:52:25
【问题描述】:
我的问题与提供者模式/库有关。
我创建了一些状态类如下(我替换了内容/变量名称以保持简单)
class State1 with ChangeNotifier{
String _s;
set s(String newS){
_s = newS;
notifyListeners();
}
}
然后我使用 multiprovider 传递它(在小部件 init 中创建对象,该对象充当应用程序中所有内容的父级。)
child: MultiProvider(
providers: [
ChangeNotifierProvider(builder: (context) => state1),
],
child: Stack(
alignment: Alignment.center,
children: stackChildren,
),
然后使用
在子小部件构建方法中访问它 state1Var = Provider.of<State1>(context);
所有这一切都很好..
我的问题是当我开始使用导航推送时,我无法再访问该状态。
onPressed: (() {
Navigator.push(
contextField,
MaterialPageRoute(builder: (context) => NewPage()),
);
}),
当我得到这个错误
Could not find the correct Provider<State1> above this NewPage Widget...
我确实设法使用它来获得它
Navigator.push(
context,
MaterialPageRoute(builder: (context) => Consumer(builder: (),child: NewPage(),)),
);
但是当我使用 navigator.pop() 弹出小部件时,无法使用状态,因为它说它已被处理。我做错了还是我错过了什么?
对不起,如果我让这变得复杂了。我不得不删除很多代码。
感谢您的帮助:)
【问题讨论】:
标签: firebase flutter bloc flutter-provider