Flutter SteamBuilder snapshot.data为空

阿卡什·普纳金(Akash Punagin)

我是新来的扑扑。我正在尝试使用SteamBuilder检索快照数据。但是snapshot.data返回null。snapshot.connectionState == ConnectionState.done为false。snapshot.hasData为false。

这是我试图在其中检索快照数据的dart文件

return StreamBuilder<UserData>(
        stream: DatabaseService(uid: user.uid).userData,
        builder: (context, snapshot) {
          //print(snapshot.connectionState == ConnectionState.done);
          //print(snapshot.data);
          if(snapshot.hasData){
            print('snapshot has data');
            UserData userData = snapshot.data;
            return Form(
              key: _formKey,
              child: Column(
                children: <Widget>[
                  Text(
                    'Update your brew settings.',
                    style: TextStyle(fontSize: 18.0),
                  ),
                  SizedBox(height: 20.0),
                  TextFormField(
                    initialValue: userData.name,
                    decoration: textInputDecorator,
                    validator: (val) => val.isEmpty ? 'Please enter a name' : null,
                    onChanged: (val) => setState(() => _currentName = val),
                  ),
                  SizedBox(height: 10.0),
                  DropdownButtonFormField(
                    value: _currentSugars ?? userData.sugars,
                    decoration: textInputDecorator,
                    items: sugars.map((sugar) {
                      return DropdownMenuItem(
                        value: sugar,
                        child: Text('$sugar sugars'),
                      );
                    }).toList(),
                    onChanged: (val) => setState(() => _currentSugars = val ),
                  ),
                  SizedBox(height: 10.0),
                  Slider(
                    value: _currentStrength.toDouble() ?? userData.strength,
                    activeColor: Colors.brown[_currentStrength ?? userData.strength],
                    inactiveColor: Colors.brown[_currentStrength ?? userData.strength],
                    min: 100.0,
                    max: 900.0,
                    divisions: 8,
                    onChanged: (val) => setState(() => _currentStrength = val.round()),
                  ),
                  RaisedButton(
                      color: Colors.pink[400],
                      child: Text(
                        'Update',
                        style: TextStyle(color: Colors.white),
                      ),
                      onPressed: () async {
                        print(_currentName);
                        print(_currentSugars);
                        print(_currentStrength);
                      }
                  ),
                ],
              ),
            );
          } else {
            print('snapshot doesnt have data');
            return Loading();
          }
        }
    );

这是流

Stream<UserData> get userData {
    return brewCollection.document(uid).snapshots().map(_userDataFromSnapshot);
  }

brewCollection-

  final CollectionReference brewCollection = Firestore.instance.collection('brews');

_userDataFromSnapshot

UserData _userDataFromSnapshot(DocumentSnapshot snapshot) {
    return UserData(
      uid: uid,
      name: snapshot.data['name'],
      sugars: snapshot.data['sugars'],
      strength: snapshot.data['strength']
    );
  }

用户数据

class UserData {

  final String uid;
  final String name;
  final String strength;
  final int sugars;

  UserData({ this.uid, this.sugars, this.strength, this.name });
}

由于我是Flutter的新手,所以我不知道如何解决此问题。请帮帮我。谢谢。

阿卡什·普纳金(Akash Punagin)

UserData类应该是

class UserData {

  final String uid;
  final String name;
  final int strength; // type int not String
  final String sugars; // type String not int

  UserData({ this.uid, this.sugars, this.strength, this.name });
}

我对强度和糖的数据类型感到困惑。我的错。这是一个愚蠢的错误。

谢谢您的回应:)

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在flutter中从本地sqlite文件中读取futurebuilder snapshot.data时为空

Flutter FutureBuilder Snapshot 为空,但 Future 确实返回数据

Flutter widget.snapshot.data 与 snapshot.data

Flutter 在未来的构建器中获取 snapshot.data[1]

Flutter snapshot.data.length 返回错误值

期望类型为“String”的值,但在 FutureBuilder SnapShot Flutter 中得到类型为“Null”的值

Flutter:Sqflite 在使用 snapshot.data.length 的未来构建器上出错

来自 Future Builder 中的 snapshot.data 的 Flutter Floor 数据库?

Flutter、future builder 和 snapshot.data,数据永远不会被加载

Flutter Snapshot.hasData 总是返回 true

满足条件后,Streambuilder的Flutter Snapshot没有数据

用Flutter中的StreamBuilder在Getter“ Snapshot”上调用null

Flutter_bloc 包中的 FutureBuilder 和 Snapshot

无效参数(输入):不得为空 - Flutter

Flutter中的变量突然为空

Flutter快照数据为空

QuerySnapshot过滤器为空-Flutter

flutter firebase 检查集合是否为空

启用AoT时,ActivatedRoute.snapshot中的角路由“数据”为空

Spring Data Neo4j 4.2.0.BUILD-SNAPSHOT OGM 2.1.0-SNAPSHOT NullPointerException

snapshot.data为Null。我正在使用for循环遍历JSON数据并创建对象实例列表

android- snapshot.getvalue指向空指针

无法为AWS ES域注册Snapshot存储库

在 Laravel 中上传 Dio 为空的 Flutter 文件

ListView中的Flutter加载json返回始终为空的数据

添加文本字段时,Flutter屏幕显示为空

如何在Flutter中检查JSON数组是否为空

Flutter 中的 Firestore 查询快照是否为空?

Uint8List图片为空-Flutter