ObservableStream<List<Type>> 转换为 List 和/或 ObservableList<Type> Flutter Mobx

问题描述 投票:0回答:1

我已经从 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,效果很好,我可以从那里获取列表,这样就可以了,而且我知道数据就在那里。

flutter sqlite dart mobx drift
1个回答
0
投票

基于@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();
          }
        }
    );
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.