cav*_*gov 0 flutter flutter-provider
我收到此错误消息:
Unhandled Exception: A ModeManager was used after being disposed.
Run Code Online (Sandbox Code Playgroud)
我将ChangeNotifier(类ModeManager)与ChangeNotifierProvider一起使用。我在其中创建 Provider 的 Build 方法如下所示:
@override
Widget build(BuildContext context) {
return !_isLoaded ? Center(child: CircularProgressIndicator()) : ChangeNotifierProvider(
create: (_) => ModeManager(_appUser),
child: Scaffold(
appBar: AppBar(
title: Text('Connect Spotify'),
),
body: AddSpotifyScreenBody(),
),
);
}
Run Code Online (Sandbox Code Playgroud)
我使用 provider 的小部件看起来像这样:
class _AddSpotifyScreenBodyState extends State<AddSpotifyScreenBody> {
@override
Widget build(BuildContext context) {
var provider = Provider.of<ModeManager>(context);
return Center(
child: Padding(
padding: EdgeInsets.all(20.0),
child: Column(
children: <Widget>[
Text(provider.isCollecting ? 'COLLECTING NOW' : 'SHARING NOW'),
//...some other widgets using provider...
],
),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
有谁知道是什么导致了这个错误或者我做错了什么?非常感谢您。
似乎您notifyListeners()在使用ChangeNotifierProvider(). 当 Future 函数调用notifyListeners(). 正如这里提到的,您可以覆盖类中的notifyListeners方法ChangeNotifier:
@override
void dispose() {
_disposed = true;
super.dispose();
}
@override
void notifyListeners() {
if (!_disposed) {
super.notifyListeners();
}
}
Run Code Online (Sandbox Code Playgroud)
不要忘记声明变量 bool _disposed = false;
| 归档时间: |
|
| 查看次数: |
1987 次 |
| 最近记录: |