我想用 管理我的应用程序的状态,我bloc pattern
在互联网上搜索并找到了很多主题,但所有主题都third party libraries
在我不想要的地方使用。
那么是否有任何资源或示例可以帮助我们在bloc pattern
不依赖任何外部库的情况下使用,例如:bloc, flutter_bloc, rxdart
?
我只想使用这些flutter built-in
功能,而不是任何其他库。
我想用 管理我的应用程序的状态,我bloc pattern
在互联网上搜索并找到了很多主题,但所有主题都third party libraries
在我不想要的地方使用。
那么是否有任何资源或示例可以帮助我们在bloc pattern
不依赖任何外部库的情况下使用,例如:bloc, flutter_bloc, rxdart
?
我只想使用这些flutter built-in
功能,而不是任何其他库。
这是我旧代码的一个片段,但我强烈建议使用 bloc 和 flutter_bloc,它删除了很多样板代码,它更安全,也更广为人知,VSCode 插件也处理了很多代码生成。
class VotesBloc {
final List<VoteCount> voteGroups = []; // initial state
// broadcasting stream so it can be used multiple times
final _controlStateController = StreamController<List<VoteCount>>.broadcast();
StreamSink<List<VoteCount>> get _incomingVote => _controlStateController.sink;
Stream<List<VoteCount>> get outgoingVote => _controlStateController.stream;
final _votesEventController = StreamController<VoteEvent>.broadcast();
Sink<VoteEvent> get votesEventSink => _votesEventController.sink;
VotesBloc() {
_votesEventController.stream.listen(_mapValuesToState);
}
void _mapValuesToState(VoteEvent event) {
if (event is NewVoteEvent) {
// handle this state
} else if (event is VoteChangedEvent) {
// handle this state
}
_incomingVote.add(voteGroups);
}
void dispose() {
_controlStateController.close();
_votesEventController.close();
}
}
abstract class VoteEvent {
final Vote _vote;
VoteEvent(this._vote);
}
class NewVoteEvent extends VoteEvent {
NewVoteEvent(Vote vote) : super(vote);
}
class VoteChangedEvent extends VoteEvent {
VoteChangedEvent(Vote vote) : super(vote);
}
class VoteCount {
final String value;
int counter;
List<Vote> votes;
VoteCount(this.value, {this.counter, this.votes});
}
和建设者功能:
StreamBuilder<List<VoteCount>>(
stream: votesBloc.outgoingVote,
initialData: votesBloc.voteGroups,
builder: (BuildContext context, AsyncSnapshot<List<VoteCount>> snapshot) {
return Widget();
}
)
在外面使用 bloc:
votesBloc.votesEventSink.add(VoteChangedEvent(vote));