调用 close 后无法添加新事件

问题描述

颤动

我正在使用 video_trimmer: ^0.5.2 插件,它允许在上传前剪切和编辑视频,按下后一切正常,但如果我通过单击底部再次重新打开编辑器,视频将不显示带有此错误 Cannot add new events after calling close 的 TrimmerEditor 小部件但如果离开页面并再次重新进入,一切都会正常工作,除非我一次又一次地单击并保持在同一 UI 页面中!

我已经知道会发生这种情况,因为小部件再次从堆栈 IF(真或假)中关闭,但我需要一个具有相同代码解决方案,因为我在相同的代码中有大而复杂的项目

    class VideoTrimmer extends StatefulWidget {
      const VideoTrimmer({Key key}) : super(key: key);
      @override
      _VideoTrimmerState createState() => _VideoTrimmerState();
    }
    
    
    class _VideoTrimmerState extends State<VideoTrimmer> {
    
      Trimmer _trimmer = Trimmer(); // this object from the package its self 
      double _startValue = 0.0;
      double _endValue = 0.0;
      bool _isPlaying = false;
      bool displayWidget = false;
    
    
      _loadVideo() {
        _trimmer.loadVideo(videoFile: file);
      }
    
      @override
      void dispose() {
        super.dispose();
       _trimmer.dispose(); // i tried to remove this too,but same issue
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(),body: Stack(
            children: [
              TextButton(
                  onpressed: (){
                    final result = await FilePicker.platform.pickFiles(allowMultiple: false );
                    if (result == null) return;
                    final path = result.files.single.path;
                    setState(() => file = File(path));
                    _loadVideo();
                    setState(() => displayWidget = true);
                  },child: Text("selectVideo")
              ),displayWidget ?
              Center(
                child: Container(
                  padding: EdgeInsets.only(bottom: 30.0),color: Colors.black,child: Column(
                    mainAxisAlignment: MainAxisAlignment.center,mainAxisSize: MainAxisSize.max,children: <Widget>[
                      Expanded(
                        child: VideoViewer(trimmer: _trimmer),),Center(
                        child: TrimEditor( // here is the issue happen 
                          trimmer: _trimmer,viewerHeight: 50.0,viewerWidth: MediaQuery.of(context).size.width,maxVideoLength: Duration(seconds: 60),onChangeStart: (value) {
                            _startValue = value;
                          },onChangeEnd: (value) {
                            _endValue = value;
                          },onChangePlaybackState: (value) {
                            if(!mounted) {
                              setState(() =>
                              _isPlaying = value);
                            }
                          },TextButton(
                        child: _isPlaying
                            ? Icon(
                          Icons.pause,size: 80.0,color: Colors.white,)
                            : Icon(
                          Icons.play_arrow,onpressed: () async {
                      bool playbackState = await _trimmer.videPlaybackControl(
                        startValue: _startValue,endValue: _endValue,);
                      if(!mounted) {
                        setState(() =>
                        _isPlaying = playbackState);
                      }
                    },ElevatedButton(
                    child: Text("SAVE"),onpressed: ()  {
                      uploadVideo();
                      setState(() =>  displayWidget  = false);
                    },],);
}
}







     

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)