我的小部件树中有以下 ValueListenableBuilder。我希望它在录制开始时打开倒数计时器的可见性。
ValueListenableBuilder(
valueListenable: _pageManager.countNotifier,
builder: (context, dynamic value, child){
print('value = ' + value.toString());
return Visibility(
visible: value,
child: Center(
child: CircularCountDownTimer(
duration: _duration,
initialDuration: 0,
controller: _countController,
autoStart: false,
onStart: () {
},
onComplete: () {
if(_currentStatus == RecordingStatus.Recording) {
_stop();
}
},
)),
);}
),
这是;
final ValueNotifier<bool> countNotifier = ValueNotifier<bool>(false);
通过这种方法更新;
void countIsVisible() {
countNotifier.value = true;
}
并在录音开始时调用;
_start() async {
try {
_pageManager.countIsVisible();
await _recorder!.start();
var recording = await _recorder!.current(channel: 0);
setState(() {
_current = recording;
stopButton = true;
_countController.start();
});
问题是,尽管该_pageManager.countIsVisible();
命令确实成功地打开了我的倒数计时器的可见性,但不幸的是,它似乎也阻止了该await _recorder!.start();
命令。因此录制没有开始。
奇怪的是,如果我再次单击录制按钮,它就会开始录制。但我想要的是一个流畅的动作,IE;我单击记录,倒数计时器变得可见并且记录开始。
任何人都可以看到问题吗?