Dart/Flutter:作为参数传递时,列表中的元素字符串变为空(为什么??)

Hyung Tae Carapeto Figur

当作为参数传递时,List 内的元素字符串变为空。它以前工作过。我不知道发生了什么,它停止工作,并开始空着传递。

我有一个名为 SubjectiveList 的模型,它是我正在谈论的列表。

class SubjectiveList {
  String id;
  String name;
  List<Item> items;
  SubjectiveList({this.id, this.name, this.items});
}

此列表具有属性项。空的是 Item 对象内的属性。

class Item {
  String id;
  String name;
  Content content;

  Item({this.id, this.name, this.content});
}

在调试器上, newList 实例看起来很好,带有对象名称(ps:此时 ID 可以为空,因为它稍后将来自 Firestore 数据库)

这是带有屏幕截图的代码: 将列表作为参数传递之前的屏幕截图

Future<dynamic> showListInfoDialog() {
    final userData = Provider.of<UserData>(context, listen: false);
    GlobalKey<FormState> _addListInfoFormKey = GlobalKey<FormState>();
    final ValueNotifier<int> tabIndex =
        Provider.of<ValueNotifier<int>>(context, listen: false);
    TempListViewModel tempList =
        Provider.of<TempListViewModel>(context, listen: false);

    return showDialog(
      context: context,
      child: SimpleDialog(
        title: Text("List Info"),
        children: <Widget>[
          Padding(
            padding: const EdgeInsets.all(defaultSpacing),
            child: Form(
              key: _addListInfoFormKey,
              child: Column(
                children: <Widget>[
                  TextFormField(
                    onChanged: (val) => tempList.setListName(val),
                    validator: (val) => val.isEmpty ? 'Write a name' : null,
                    decoration: InputDecoration(
                      prefixIcon: Icon(Icons.featured_play_list),
                      labelText: "List Name",
                    ),
                  ),
                  SizedBox(height: defaultSpacing),
                  SizedBox(
                    width: double.infinity,
                    child: RaisedButton(
                      child: Text("Create List"),
                      color: successColor,
                      onPressed: () {
                        if (_addListInfoFormKey.currentState.validate()) {
                          final newList = SubjectiveList(
                              name: tempList.list.name,
                              items: tempList.list.items);
                          DatabaseService(uid: userData.uid)
                              .addListToDatabase(newList); // <-- HERE
                          tempList.init();
                          tabIndex.value = 0;
                          Navigator.of(context).pop();
                        }
                      },
                    ),
                  )
                ],
              ),
            ),
          ),
        ],
      ),
    );
  }

然后到函数的时候就出现空了!!

在此处输入图片说明

Future addListToDatabase(SubjectiveList list) async { <-- HERE
    DocumentReference listDocument =
        await userDocument.collection('lists').add({'name': list.name});
    [...]
  }
Hyung Tae Carapeto Figur

谢谢@edenar 现在我明白发生了什么。在 Flutter 中,“final newList = SubjectiveList(name: tempList.list.name, items: tempList.list.items);” 进行指针引用,而不是当前值的声明。因此,当它转到下一行并执行 tempList.init() 时,它会在获取函数中的参数之前清除列表。

因此,它可以将 await 放在该行中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么属性作为参数传递时变为空?

来自分类Dev

当作为参数传递时,来自 jQuery 的字符串值变为未定义

来自分类Dev

为什么在函数参数中将字符串作为const字符串传递

来自分类Dev

为什么我的字符串数组变为空-C

来自分类Dev

将数组的元素作为参数列表传递给函数(而不是组合字符串)

来自分类Dev

当整数,字符串和数组作为JavaScript中的函数参数传递时,有什么区别

来自分类Dev

为什么当我在 Series 中使用 dtype=str 作为参数并将数据作为字符串和浮点数列表传递时,它不显示错误。?

来自分类Dev

为什么不能将字符串作为数据参数传递给Blaze.renderWithData()?

来自分类Dev

oracle将字符串作为参数传递列表

来自分类Dev

Javascript,将我的字符串作为参数传递将其变为 0

来自分类Dev

REST-传递列表查询字符串参数时是否保证元素顺序?

来自分类Dev

为什么将字符串作为文件名而不是char *传递时出现错误?

来自分类Dev

当作为字符串传递时,为什么不相同的数组被视为相等?

来自分类Dev

传递参数时批量使用“=”作为字符串

来自分类Dev

为什么在getattr()中将属性作为字符串传递?

来自分类Dev

为什么 JavaScript 在使用对象作为键时隐式字符串化参数值?

来自分类Dev

单击按钮时,将参数作为 url 字符串中的更改传递

来自分类Dev

从JavaScript编译为Wasm的异步Rust函数时,为什么字符串参数为空?

来自分类Dev

为什么在C中打印字符而不在字符串时使用星号作为指针?

来自分类Dev

为什么键入错误:<string>中的字符串要求字符串作为左操作数,而不是列表

来自分类Dev

在bash中将字符串作为函数的参数传递时,字符串被剪切

来自分类Dev

传递空字符串作为参数

来自分类Dev

传递替换字符串作为参数

来自分类Dev

传递字符串作为参数

来自分类Dev

R中的功能:使用列表参数作为字符串

来自分类Dev

为什么$ @在传递字符串时不起作用?

来自分类Dev

JavaScript - 传递的字符串参数在递归调用中变为未定义

来自分类Dev

从sql合并字符串中删除空列表元素

来自分类Dev

为什么串联两个字符串并将其作为参数传递不会创建新的字符串对象?

Related 相关文章

  1. 1

    为什么属性作为参数传递时变为空?

  2. 2

    当作为参数传递时,来自 jQuery 的字符串值变为未定义

  3. 3

    为什么在函数参数中将字符串作为const字符串传递

  4. 4

    为什么我的字符串数组变为空-C

  5. 5

    将数组的元素作为参数列表传递给函数(而不是组合字符串)

  6. 6

    当整数,字符串和数组作为JavaScript中的函数参数传递时,有什么区别

  7. 7

    为什么当我在 Series 中使用 dtype=str 作为参数并将数据作为字符串和浮点数列表传递时,它不显示错误。?

  8. 8

    为什么不能将字符串作为数据参数传递给Blaze.renderWithData()?

  9. 9

    oracle将字符串作为参数传递列表

  10. 10

    Javascript,将我的字符串作为参数传递将其变为 0

  11. 11

    REST-传递列表查询字符串参数时是否保证元素顺序?

  12. 12

    为什么将字符串作为文件名而不是char *传递时出现错误?

  13. 13

    当作为字符串传递时,为什么不相同的数组被视为相等?

  14. 14

    传递参数时批量使用“=”作为字符串

  15. 15

    为什么在getattr()中将属性作为字符串传递?

  16. 16

    为什么 JavaScript 在使用对象作为键时隐式字符串化参数值?

  17. 17

    单击按钮时,将参数作为 url 字符串中的更改传递

  18. 18

    从JavaScript编译为Wasm的异步Rust函数时,为什么字符串参数为空?

  19. 19

    为什么在C中打印字符而不在字符串时使用星号作为指针?

  20. 20

    为什么键入错误:<string>中的字符串要求字符串作为左操作数,而不是列表

  21. 21

    在bash中将字符串作为函数的参数传递时,字符串被剪切

  22. 22

    传递空字符串作为参数

  23. 23

    传递替换字符串作为参数

  24. 24

    传递字符串作为参数

  25. 25

    R中的功能:使用列表参数作为字符串

  26. 26

    为什么$ @在传递字符串时不起作用?

  27. 27

    JavaScript - 传递的字符串参数在递归调用中变为未定义

  28. 28

    从sql合并字符串中删除空列表元素

  29. 29

    为什么串联两个字符串并将其作为参数传递不会创建新的字符串对象?

热门标签

归档