目标是使用map将字符串转换为列表,并将值返回给函数调用.

我正在使用SharedPreferences保存一个名为WHERE的对象列表,该列表名为Where in I Saved the Data At Point,并在数据显示时获取数据.

下面的块是发生错误的函数.

void getData() async {
    final prefs = await SharedPreferences.getInstance();
    final String taskString = prefs.getString('task_data').toString();
    List<Task> tasksData = Task.decode(taskString);
    _tasks = tasksData;
    notifyListeners();
  }

Decode()Look基本上执行转换.

static List<Task> decode(String tasks) {
    return (jsonDecode(tasks) as List<dynamic>).map<Task>((task) {
      return Task.fromJson(task);
    }).toList();

它建议判断decode()的类型转换中是否有空条件.但在执行判断时,它会给出相同的错误.

推荐答案

您的响应可能不是正确的映射,因此它无法使用jsonDecode函数来解码该数据,因此它返回Null,因此您可以这样使用您的函数可能会对您有所帮助:

static List<Task> decode(String tasks) {
  var data = (jsonDecode(tasks) as List<dynamic>?);
  if(data != null){
    return (jsonDecode(tasks) as List<dynamic>?)!.map<Task>((task) {
      return Task.fromJson(task);
    }).toList();
  } else {
    return <Task>[];
  }
}

Flutter相关问答推荐

如何创建一个按钮来在Ffltter Webview中转到上一页?

如何使用新的Riverpod语法将依赖传递给AsyncNotifier?

我的flutter代码显示一个小部件被认为是死代码,为什么?

如何处理Flutter Riverpod异步通知器中的状态和数据库

缩短经常使用的行Theme.of(context).colorScheme

Android工作室Flutter 热重新加载更新后不工作

当我转到其他屏幕并按下后退按钮时,屏幕将不会刷新

Flutter Xcode 15 错误(Xcode):DT_TOOLCHAIN_DIR 无法用于判断 LIBRARY_SEARCH_PATHS

Flutter 构建 Web 分段故障 - 无法启动事件处理程序线程

Firebase Auth - 有没有办法为新用户预先生成 UID?

更改底部导航栏下方 Flutter Snackbar 的位置

减少 Flutter 中 API 的连接等待时间

Flutterfire Configure - 未处理的异常和没有 firebase 初始化

如何更改中心的圆形进度指示器

如何显示从 MariaDB 获取的数据到列表视图

Flutter Web App 未启动:脚本的 MIME 类型不受支持

使用 mocktail 包进行单元测试时,类型Null不是Future类型的子类型

是否可以在 Flutter 中使用 ToggleButtons 在页面 PageView 之间切换?

如何在Flutter 中制作自定义微调器?

如何在Flutter 中水平滚动堆叠定位的小部件?