0

我的小部件树中有以下 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;我单击记录,倒数计时器变得可见并且记录开始。

任何人都可以看到问题吗?

4

0 回答 0