gpt4 book ai didi

swift - flutter/dart 中 swift 的 DispatchGroup 的替代方案是什么?

转载 作者:IT王子 更新时间:2023-10-29 06:51:52 24 4
gpt4 key购买 nike

我想知道如何在 flutter/dart 中编写这段代码?我不知道 flutter 中的任何类可以通知某些代码在另一个代码完成后执行。

var posts = [Post]()

let dispatchGroup = DispatchGroup()

snapshot.forEach({ (postSnapshot) in
guard let postDict = postSnapshot.value as? [String : Any],
let posterUID = postDict["poster_uid"] as? String
else { return }

let postKey = postSnapshot.key

dispatchGroup.enter()

showUserPost(forKey: postKey, posterUID: posterUID) { (post) in
if let post = post {
posts.append(post)
}

dispatchGroup.leave()
}
})

dispatchGroup.notify(queue: .main, execute: {
completion(nil, posts.reversed())
})

最佳答案

有多种选择:

ListenableValueNotifier,flutter提供

  final  valueNotifier = new ValueNotifier(42);
valueNotifier.addListener(() {
print(valueNotifier.value);
});
valueNotifier.value++; // automatically notify all listener

或者 Stream/Sink 是来自 dart:asyncStreamController

final streamController = new StreamController<int>.broadcast();
streamController.stream.listen((value) {
print(value);
});
streamController.sink.add(45);

尽可能使用 Stream 而不是 Listenable。由于 dart native 支持流,并使用一些语法糖使其更容易使用,例如:

await for (final value in stream) {
print(value);
}

Stream<int> createStream() async* {
yield 42;
}

关于swift - flutter/dart 中 swift 的 DispatchGroup 的替代方案是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50778400/

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