如何解决在 Flutter 上使用 Provider 时,在 null 错误时调用了 getter
我有提供者:
import 'package:Flutter/material.dart';
import 'package:hive/hive.dart';
class AppProvider extends ChangeNotifier {
Box tjkBox;
// Language
String _ln = "ru";
String get ln => _ln;
set ln(String l) {
_ln = l;
tjkBox.put("language",l);
notifyListeners();
}
AppProvider() {
tjkBox = Hive.Box("tjk");
_ln = tjkBox.get("language",defaultValue: "ru");
print("ln = $_ln");
}
}
我包装了我的根小部件:
return MultiProvider(
providers: [
ChangeNotifierProvider<AppProvider>(create: (_) => AppProvider()),// here goes other providers
],child: ...
);
然后我尝试像这样访问 ln 属性:
Consumer<AppProvider>(
builder: (context,app,child) => Text(app?.ln),)
或者像这样:
Text(Provider.of<AppProvider>(context).ln)
但它一直给我错误:
The getter 'ln' was called on null.
请解释一下,我遗漏了什么?
解决方法
提供者概念和示例可在 Provider docs 上获得。
用 newNode
包裹您的 Consumer
小部件(应用小部件或根屏幕)的根:
ChangeNotifierProvider
并且在所有子小部件中,您都可以访问 ChangeNotifierProvider(
create: (_) => AppProvider(),child: ...
)
模型。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。