Flutter `未来<;流>;`不是“Stream”类型的子类型`
我制作了一个简单的singleton类,用于FlatterFlutter `未来<;流>;`不是“Stream”类型的子类型`,flutter,dart,Flutter,Dart,我制作了一个简单的singleton类,用于FlatterStreamBuilder小部件,例如: StreamBuilder<User>( stream: MydbModel.create().then((dao) => dao.getUserStream()) as Stream<User>, builder: (_, snapshot) { ... }, ) 我如何解决这个问题 我完成的课程: > type 'Future<S
StreamBuilder
小部件,例如:
StreamBuilder<User>(
stream: MydbModel.create().then((dao) => dao.getUserStream()) as Stream<User>,
builder: (_, snapshot) {
...
},
)
我如何解决这个问题
我完成的课程:
> type 'Future<Stream<User>>' is not a subtype of type 'Stream<User>' in type cast
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;
}
classmydbmodel{
用户道(UserDao);;
MydbModel.uu(this.userDao);
静态Future create()async=>MydbModel.(wait initialDatabase());
静态未来initialDatabase()异步{
var db=await$FloorAppDatabase.databaseBuilder('flatter_database.db').build();
返回db.userDao;
}
流getUserStream(){
返回userDao.getUserInfo();
}
UserDao获取UserDao=>\u UserDao;
}
您需要先等待未来
:
FutureBuilder(
future: MydbModel.create(),
builder: (BuildContext context, AsyncSnapshot<MydbModel> snapshot) {
if (!snapshot.hasData) return Container();
return StreamBuilder(
stream: snapshot.data.getUserStream(),
builder: ..,
);
},
);
FutureBuilder(
future:MydbModel.create(),
生成器:(BuildContext上下文,异步快照){
如果(!snapshot.hasData)返回容器();
返回流生成器(
流:snapshot.data.getUserStream(),
建筑商:。。,
);
},
);
我使用了一个FutureBuilder
来等待Future
并在加载Future时创建一个StreamBuilder