【问题标题】:Streambuilder - error after flutter migration - snapshot syntaxStreambuilder - 颤振迁移后的错误 - 快照语法
【发布时间】:2022-06-28 20:04:56
【问题描述】:

我在迁移时使用了这段代码

StreamBuilder(
          stream: FirebaseDatabase.instance
              .ref()
              .child('user')
              .child(_userID)
              .onValue,
          builder: (context, snapshot) {
            if (snapshot.hasData) {
              _networkImageUrl = snapshot.data.snapshot.value["img"];
              return Text(_networkImageUrl.toString());
             } else {
               return Container();
            }
          }),

在“dart pub upgrade --null-safety”之后出现错误:

The property 'snapshot' can't be unconditionally accessed because the receiver can be 'null'.

我尝试用“!”修复它但它不起作用,它保持同样的错误

【问题讨论】:

  • 您能展示一下您是如何尝试修复它的吗?你在哪里添加! 当你添加它时错误指向其他地方吗?
  • _networkImageUrl = snapshot.data!.snapshot.value["img"];在这个位置上,但我也尝试过其他所有位置:-)。它抛出错误“没有为类型'Object'定义getter'snapshot'”
  • 尝试给你的快照一个值:StreamBuilder<DatabaseEvent>(...
  • 谢谢你,这是决定性的提示,我已将其扩展为 var userDocument = snapshot.data as Map; _networkImageUrl = userDocument["img"];
  • 很高兴它得到了修复!

标签: flutter dart dart-null-safety


【解决方案1】:

这是代码:

StreamBuilder<DatabaseEvent>(
          stream: FirebaseDatabase.instance
              .ref()
              .child('user')
              .child(_userID)
              .onValue,
          builder: (BuildContext context,AsyncSnapshot snapshot) {
            if (snapshot.hasData) {
              Map<dynamic, dynamic> userDocument = snapshot.data.snapshot.value;
              _networkImageUrl = userDocument["img"]
              return Text(_networkImageUrl.toString());
             } else {
               return Container();
            }
          }),

感谢@h8moss

【讨论】:

    猜你喜欢
    • 2021-11-13
    • 1970-01-01
    • 2021-07-27
    • 2020-07-19
    • 2022-10-05
    • 2021-09-30
    • 2021-05-11
    • 2022-01-14
    • 2021-08-07
    相关资源
    最近更新 更多