【发布时间】:2021-01-18 18:20:41
【问题描述】:
我有一个从FutureProvider 获取数据的应用程序,一切正常。除了我不能在我的应用程序中更改其他providers 的状态。当我这样做时,我得到了这个错误
type '_InternalLinkedHashMap
' 不是 'value' 类型 'Map ' 的子类型
这里是我的所有providers,用于此示例
final connectionTypeProvider = FutureProvider.autoDispose((_) async {
final ConnectionType connectionType = await kGetConnectionType();
return connectionType;
});
final loadFromDatabase =
StateProvider<Map<String, bool>>((_) => {"loadFromDatabase": false});
final userAuthProvider = StateProvider<Map<String, bool>>((_) => {
'signedIn': false,
'loaded': true,
'signInWasDissmised': false,
'userIsConnectedToInternet': true
});
这就是我如何使用它。请参考代码中的 cmets。
class GetPage extends ConsumerWidget {
const GetPage({@required this.appState});
final Map<String, bool> appState;
@override
Widget build(BuildContext context, ScopedReader watch) {
StateController<Map<String, bool>> fromDatabase = watch(loadFromDatabase);
StateController<Map<String, dynamic>> isConnected = watch(userAuthProvider);
return watch(connectionTypeProvider).when(
data: (data) {
if (data == ConnectionType.none) { // Until here it works just fine
// Check database for previous data and if there is, show it to the user
final String database = 'Data';
if (database.isNotEmpty) {
fromDatabase.state = { // Here the problem happens
...fromDatabase.state,
"loadFromDatabase": true
};
print(fromDatabase);
return Home();
} else {
isConnected.state = { // Here the problem happens
...isConnected.state,
'userIsConnectedToInternet': false
};
// ... Other code
那么问题是什么,我该如何解决呢?谢谢
【问题讨论】:
标签: flutter dictionary dart state-management riverpod