【发布时间】:2021-10-12 09:12:19
【问题描述】:
我在一个小部件(主屏幕)中有这个功能:
void toggleRecording() async {
// HERE IS THE CONFUSION I GUESS
_isRecording = !_isRecording;
recorder = SoundStream(isRecording: _isRecording);
//recorder.toggleRecording(_isRecording);
setState(() {
_isRecording = recorder.isRecording;
});
if (_isRecording) {
startTimer();
_stopwatch.start();
} else {
stopTimer();
_stopwatch.stop();
}
}
它需要调用(触发)我的记录器类中的另一个函数:
void toggleRecording() async {
widget.isRecording ////// currently being passed as an argument from homescreen
? {_recorder.stop, await save(_micChunks, 44100)}
: _recorder.start;
}
此外,布尔变量_isRecording 存在于两个类中。如何同步状态?
【问题讨论】:
-
这是一个状态管理问题 试用 provider 或 riverpod for starters,您可以在其中跨多个小部件公开某些状态。
-
我试过提供者。无法让所有东西协同工作。
-
Provider 一开始确实很容易,但在某些时候要让所有东西都工作起来有点困难。试用 Riverpod,在我看来,这是 Provider 的生产就绪版本。 1.0 版也即将推出~ish。
标签: flutter dart state parameter-passing