flutter - Getx Flutter 在更新值时抛出 null 错误

标签 flutter flutter-getx

数据模型

class DataModel {
  Book? book;
  DataModel({
     this.book,
  });
}

class Book {
  String author;
  Book({
    required this.author,
  });
}

Getx Controller

class BookController extends GetxController{
   var dataModel = DataModel().obs;
  updateAuthor(){
    dataModel.value.book!.author = "";
  }
}

更新作者 Getx 时抛出“在 null 值上使用 null 检查”

将功能更改为此后

  updateAuthor(){
    dataModel.value.book?.author = "";
  }

它没有更新值,使其为空。

还尝试使用更新方法无法更新这种类型的数据模型的值。类内部的类。

我只是想更新作者的信息,但无法做到。

最佳答案

在这里,我将解释你做错了什么,

首先,您创建了一个 DataModel 的对象.

   var dataModel = DataModel().obs;

这个dataModel有一个book您用 ? 标记的属性所以你把它设置为空。

所以此时:

dataModel.value.book == null ; // true

您没有分配真正的Book book 属性的实例,因此它是 null ,所以这一行:

dataModel.value.book!.author = ""; // will throw an error

因为dataModel.value.booknull .

分配新的 Book() 需要什么?反对这样的 book 属性,指定 author属性Book()

  updateAuthor(){
  dataModel.value.book = Book(author: "");
  dataModel.refresh();
  }

现在我们有了一个真正的Book对象分配给 book ,这将修复您遇到的空错误。

关于flutter - Getx Flutter 在更新值时抛出 null 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74658967/

相关文章:

Flutter:Future 函数正在连续调用

image - 当键盘弹出时如何隐藏图像小部件?

button - 凸起的按钮宽度减少 flutter

android-studio - 无法在android studio中创建flutter项目

android-studio - 如何在 flutter 中编写条件语句?

flutter - 我需要显示阿拉伯日期选择器

Flutter GetX Get.back() 或 navigator.pop() 从内存中删除 Controller 并且无法重新创建它

flutter - 错误 [Get] 检测到 GetX 的不当使用。使用底部导航栏

Flutter GetX Re-Initialise GetX Controller Reset GetX Controller, Reset GetX Controller Values

flutter - 带有 GetX 标签的多个实例在 flutter 中不起作用