Flutter GetX 和获取存储错误类型:'List<dynamic>' 不是匿名关闭后类型'Map<String, dynamic> 的子类型
Posted
技术标签:
【中文标题】Flutter GetX 和获取存储错误类型:\'List<dynamic>\' 不是匿名关闭后类型\'Map<String, dynamic> 的子类型【英文标题】:Flutter GetX and Get Storage Error type: 'List<dynamic>' is not a subtype of type 'Map<String, dynamic> after anonymous closureFlutter GetX 和获取存储错误类型:'List<dynamic>' 不是匿名关闭后类型'Map<String, dynamic> 的子类型 【发布时间】:2021-07-06 04:01:41 【问题描述】:我遇到了一个错误,在谷歌搜索后很常见,但我没有找到与我类似的代码,因为我使用的是 GetX 和 Get Storage。 所以,我正在构建一个简单的(不适合我,因为我是 Flutter 的新手)购物清单应用程序(基本上是一个待办事项应用程序),当我将一个项目添加到列表中时,如果我回到堆栈上,它会完美地添加到内存中使用 Get.back() 然后我再次打开 ShoppingScreen 我遇到了错误。
这是控制台消息:
在构建 Builder(dirty) 时引发了以下 _TypeError:
'ShoppingList' 类型不是 'Map
相关的导致错误的小部件是 获取材料应用程序 lib\main.dart:21 抛出异常时,这是堆栈
#0 ShoppingListController.onInit.
包装:one_place_all_notes/controllers/shopping_list_controller.dart:19
#1 MappedListIterable.elementAt (dart:_internal/iterable.dart:411:31)
#2 ListIterator.moveNext (dart:_internal/iterable.dart:340:26)
#3 新的 _GrowableList._ofEfficientLengthIterable (dart:core-patch/growable_array.dart:188:27)
#4 new _GrowableList.of (dart:core-patch/growable_array.dart:150:28)
这是课程:
class ShoppingList
String text;
bool done;
ShoppingList(this.text, this.done = false);
factory ShoppingList.fromjson(Map<String, dynamic> json) => ShoppingList(
text: json['text'],
done: json['done'],
);
Map<String, dynamic> toJson()
final Map<String, dynamic> data = Map<String, dynamic>();
data['text'] = this.text;
return data;
这是发生错误的控制器:
class ShoppingListController extends GetxController
var shoppings = <ShoppingList>[].obs;
@override
void onInit()
List storedShoppings = GetStorage().read<List>('shoppings');
if (storedShoppings != null)
shoppings = storedShoppings
.map((e) => ShoppingList.fromjson(e))
.toList().obs;
【问题讨论】:
可能有助于显示您存储它的方式以及发生错误时返回的页面。当您重新启动时,onInit
中的所有内容都可以正常运行吗?
感谢您的评论,但最后我自己解决了问题,请参阅下面的答案..
【参考方案1】:
经过几个小时的努力,我解决了这个问题。我不知道这是否是正确的方法,但它有效。
在使用 Get.back() 弹出屏幕的 onPressed 函数中;我还添加了另一个 GetX 方法,Get.appUpdate();
因为我注意到在热重新加载后我没有遇到问题,因此强制应用更新 为我解决了这个问题。但如果有更好的解决方案,我很高兴听到它们。
【讨论】:
以上是关于Flutter GetX 和获取存储错误类型:'List<dynamic>' 不是匿名关闭后类型'Map<String, dynamic> 的子类型的主要内容,如果未能解决你的问题,请参考以下文章
在 Flutter 中,我如何使用 API 和 GetX 在 JSON 中获取数据