android - "[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: type ' future <文件> ' is not a subtype of type ' 文件? ' in type cast"错误

标签 android flutter imagepicker

我正在尝试使用 Flutter 上传图片并将该图片上传到 imgur。但我收到错误。在此之前,让我向您展示我的代码:

FloatingActionButton.large(
  child: Icon(Icons.folder, color: Colors.white, size: 45,),
  backgroundColor: Color.fromARGB(255, 36, 36, 36),
  onPressed: () async {
    final File? image = ImagePicker.pickImage(source: ImageSource.gallery) as File?;
    final File? imagefile = File(image!.path);
    if (imagefile == null) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(
          content: Text("not image selected."),
          backgroundColor: Color.fromARGB(255, 36, 36, 36),
        ),
      );
      return null;
    }
    else {
      print("else");
      uploadImage("bolat", image);
    }
  },
),
// ...
  void uploadImage(String title, File file) async {
    var request = http.MultipartRequest("POST", Uri.parse("https://api.imgur.com/3/image"));
    request.fields["title"] = title;
    request.headers["Authorization"] = "";
    var picture = http.MultipartFile.fromBytes('image', (await rootBundle.load('assets/testimage.png')).buffer.asUint8List(),
    filename: 'image.png');
    request.files.add(picture);
    var response = await request.send();
    var responseData = await response.stream.toBytes();
    var result = String.fromCharCodes(responseData);
    print(result);
 }

当我尝试此代码时,出现此错误:

[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: type 'Future<File>' is not a subtype of type 'File?' in type cast
#0      _BolatAktarAppState.build.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:bolataktar_resimyukleme/screens/resimyukleme_main.dart:66:104)
#1      _BolatAktarAppState.build.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:bolataktar_resimyukleme/screens/resimyukleme_main.dart:65:42)
#2      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:1010:21)
#3      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:247:24)
#4      TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:620:11)
#5      BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:299:5)
#6      BaseTapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:269:7)
#7      GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:163:27)
#8      GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:454:20)
#9      GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:430:22)
#10     RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:337:11)
#11     GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:385:7)
#12     GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:347:5)
#13     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:304:7)
#14     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:285:7)
#15     _invoke1 (dart:ui/hooks.dart:167:13)
#16     PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:341:7)
#17     _dispatchPointerDataPacket (dart:ui/hooks.dart:94:31)

[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: MissingPluginException(No implementation found for method pickImage on channel plugins.flutter.io/image_picker)
#0      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:292:7)
<asynchronous suspension>
#1      ImagePicker.pickImage (package:image_picker/image_picker.dart:64:25)
<asynchronous suspension>

如何解决这个问题?预先感谢您的帮助。

最佳答案

把代码改成这样

Future<void> uploadImage(String title, File file) async {
        var request =await http.MultipartRequest("POST", Uri.parse("https://api.imgur.com/3/image"));
        request.fields["title"] = title;
        request.headers["Authorization"] = "";
        var picture = http.MultipartFile.fromBytes('image', (await rootBundle.load('assets/testimage.png')).buffer.asUint8List(),
        filename: 'image.png');
        request.files.add(picture);
        var response = await request.send();
        var responseData = await response.stream.toBytes();
        var result = String.fromCharCodes(responseData);
        print(result);
     }

关于android - "[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: type ' future <文件> ' is not a subtype of type ' 文件? ' in type cast"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72998093/

相关文章:

android - DevicePolicyManager 删除数据未删除电子邮件设置

java - 线程 OutOfMemoryError,强制关闭

ios - 每当我添加 FlutterFire 包时,Firebase 就会停止工作

flutter - ImageSource.Gallery 上带有抖动的图像选择器的错误

android - ndk-gdb 和 eclipse "No Source File named..."

dart - 创建一部分 flutter 代码作为小部件和变量有什​​么区别

flutter - 如何在 Flutter 中格式化日期时间?删除 DateTime 中的毫秒数?

react-native - 有没有办法使用 Expo Image Picker 获取图像文件的原始名称?

以前在 Windows 上的 Ubuntu 中的 Android Studio Open Project 说每个文件都已更改