我有一个从 a 获取数据的应用程序,FutureProvider
一切正常。除了我不能providers
在我的应用程序中更改其他的状态。当我这样做时,我得到了这个错误
type '_InternalLinkedHashMap<String, dynamic>' 不是 'value' 类型 'Map<String, bool>' 的子类型
这是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
});
这就是我如何使用它。请参考代码中的注释。
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
那么问题是什么,我该如何解决呢?谢谢