gpt4 book ai didi

flutter - `Future` 不是类型 `Stream` 的子类型

转载 作者:IT王子 更新时间:2023-10-29 07:18:38 25 4
gpt4 key购买 nike

我制作了简单的单例类以在 flutter 上使用 StreamBuilder小部件,例如:

StreamBuilder<User>(
stream: MydbModel.create().then((dao) => dao.getUserStream()) as Stream<User>,
builder: (_, snapshot) {
...
},
)

在那个

MydbModel.create().then((dao) => dao.getUserStream())

返回Future<Stream<User>>我的类型转换不工作只有 Stream<User> .

错误:

> type 'Future<Stream<User>>' is not a subtype of type 'Stream<User>' in type cast

我该如何解决这个问题?

我完成的类(class):

class MydbModel{
UserDao _userDao;

MydbModel._(this._userDao);
static Future<MydbModel> create() async => MydbModel._(await initialDatabase());

static Future<UserDao> initialDatabase() async {
var db = await $FloorAppDatabase.databaseBuilder('flutter_database.db').build();
return db.userDao;
}

Stream<User> getUserStream(){
return userDao.getUserInfo();
}

UserDao get userDao=>_userDao;
}

最佳答案

你需要先等待Future:

FutureBuilder(
future: MydbModel.create(),
builder: (BuildContext context, AsyncSnapshot<MydbModel> snapshot) {
if (!snapshot.hasData) return Container();
return StreamBuilder(
stream: snapshot.data.getUserStream(),
builder: ..,
);
},
);

我使用 FutureBuilder等待 Future 并在加载 future 时创建 StreamBuilder

关于flutter - `Future<Stream>` 不是类型 `Stream` 的子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56516678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com