我已经从 Drift: Stream 设置了一个 sqlite 流到我的 @oberservable 类中。我可以将其设为 OberserableStream,但我不明白如何从流中获取列表。
我的问题是如何从 ObservableStream 获取列表并使其成为 ObservableList 或直接从 Stream 使其成为 ObservableList?
这是到目前为止我犯的错误。我已经尝试了很多排列,但 IDE 一直告诉我它的类型错误、.map 错误、错误
<whatever>
@observable
ObservableList<TodoDrift> streamTodos() {
ObservableStream<List<TodoDrift>> list = stObv.asObservable();
List<TodoDrift> prod = list.map(
(e) {
return e.done != true;
});
return prod.asObservable();
// return Future.wait(olStream);
}
谢谢!
FWIW。我还有一个来自 Drift 的 Future,效果很好,我可以从那里获取列表,这样就可以了,而且我知道数据就在那里。
基于@pskink问题,这是工作代码。
状态(mobx):
//pulling from drift .watch() sqlite
@observable
Stream<List<TodoDrift>> stObv = _db.streamTodos();
显示:
const TodoListView({super.key});
@override
Widget build(BuildContext context) {
final list = TodoDriftList(); //access mobx state class/store
return StreamBuilder(
stream: list.stObv, //@observed stream returned from drift .watch() query
builder: (context, snapshot) {
if (snapshot.hasData) {
return ListView.builder(
itemCount: snapshot.data!.length,
shrinkWrap: true,
itemBuilder: (_, index) {
return Observer(
builder: (_) {
final item = snapshot.data![index];
return Text(item.description); //strictly for testing output
}
);
}
);
} else {
return const CircularProgressIndicator();
}
}
);
}
}