Flutter 升级后:参数类型 'Future<bool> Function(File)' 不能分配给参数类型 'FutureOr<dynamic> Function(Uint8List)'

Mic*_*awa 9 flutter

我似乎无法弄清楚如何解决此错误。这以前是有效的,但现在升级到 Flutter Null Safety 版本后会产生此错误:

我正在使用屏幕截图:用于 ScreenshotController 的 ^1.0.0-nullsafety.1 包

File _imageFile;
ScreenshotController screenshotController = ScreenshotController();

IconButton(
            icon: Icon(Icons.download_sharp),
            onPressed: () {
              
              Directory directory;
              _requestPermission(Permission.storage);
              try {
                _imageFile = null;
                screenshotController
                    .capture(delay: Duration(milliseconds: 10))
                    .then((File image) async {
                  //print("Capture Done");
                  setState(() {
                    _imageFile = image;
                  });

                  if (await _requestPermission(Permission.storage)) {
                    directory = await getExternalStorageDirectory();

                    String newPath = '';
                    List<String> folders = directory.path.split('/');


                    for (int x = 1; x < folders.length; x++) {
                      String folder = folders[x];
                      if (folder != 'Android') {
                        newPath += '/' + folder;
                      } else {
                        break;
                      }
                    }
                    newPath = newPath + '/Tinda';
                    directory = Directory(newPath);
                    print(directory.path);
                  } else {
                    return false;
                  }
                  if (!await directory.exists()) {
                    await directory.create(recursive: true);
                  }
                  if (await directory.exists()) {
                    final result = await ImageGallerySaver.saveImage(
                        _imageFile.readAsBytesSync(),
                        quality: 100);
                    print("File Saved");
                    print(result);
                  }
                }).catchError((onError) {
                  print(onError);
                });
              } catch (e) {
                print(e);
              }
            },
          ),
Run Code Online (Sandbox Code Playgroud)

下面是一些截图:

实际代码

错误信息

任何指导将不胜感激。

Sim*_*ter 1

该错误告诉您使传递给函数的参数.then应该是类型Uint8List而不是File。这很可能是因为sceenshotController.capture返回 a Future<Uint8List>,因此在 中.then,您将可以访问Uint8List.