Flutter 和 Android Studio:找不到 providerinstaller 的本地模块描述符类

Posted

技术标签:

【中文标题】Flutter 和 Android Studio:找不到 providerinstaller 的本地模块描述符类【英文标题】:Flutter & Android Studio: Local module descriptor class for providerinstaller not found 【发布时间】:2021-01-06 03:08:08 【问题描述】:

我一直在尝试开发一个适用于 firebase 的应用程序。我不是编码专家。

实际上,我的应用在模拟器上运行良好,但我收到一条错误消息,如下所示:

W/DynamiteModule(11855): Local module descriptor class for providerinstaller not found.
I/DynamiteModule(11855): Considering local module providerinstaller:0 and remote module providerinstaller:0
W/ProviderInstaller(11855): Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0.
W/DynamiteModule(11855): Local module descriptor class for providerinstaller not found.
I/DynamiteModule(11855): Considering local module providerinstaller:0 and remote module providerinstaller:0
W/ProviderInstaller(11855): Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0.

你可以在下面看到我的依赖:

dependencies:
  flutter:
    sdk: flutter
  cloud_firestore: ^0.14.0+2
  image: ^2.0.7
  animator: 0.1.4
  image_picker: ^0.6.7+7
  google_sign_in: ^4.5.3
  timeago: 2.0.17
  cached_network_image:
  firebase_auth: ^0.18.0+1
  geolocator: 5.0.1
  uuid: ^2.0.0
  cupertino_icons: ^0.1.2
  path_provider: ^1.6.16
  firebase_messaging: ^7.0.0
  firebase_storage: ^4.0.0
  firebase_core: ^0.5.0
  flutter_svg: ^0.19.0

当我尝试使用相机上传图像时,除了上面的 providerinstaller 问题之外,我还收到以下其他错误:

E/flutter (11855): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: NoSuchMethodError: The getter 'path' was called on null.
E/flutter (11855): Receiver: null
E/flutter (11855): Tried calling: path
E/flutter (11855): #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
E/flutter (11855): #1      _UploadPageState.pickImageFromGallery (package:buddiesgram/pages/UploadPage.dart:37:38)
E/flutter (11855): <asynchronous suspension>
E/flutter (11855): #2      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:992:19)
E/flutter (11855): #3      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:1098:38)
E/flutter (11855): #4      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:184:24)
E/flutter (11855): #5      TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:524:11)
E/flutter (11855): #6      BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:284:5)
E/flutter (11855): #7      BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:219:7)
E/flutter (11855): #8      PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:477:9)
E/flutter (11855): #9      PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:78:12)
E/flutter (11855): #10     PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:124:9)
E/flutter (11855): #11     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:377:8)
E/flutter (11855): #12     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:122:18)
E/flutter (11855): #13     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:108:7)
E/flutter (11855): #14     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:220:19)
E/flutter (11855): #15     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:200:22)
E/flutter (11855): #16     GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:158:7)
E/flutter (11855): #17     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:104:7)
E/flutter (11855): #18     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:88:7)
E/flutter (11855): #19     _rootRunUnary (dart:async/zone.dart:1206:13)
E/flutter (11855): #20     _CustomZone.runUnary (dart:async/zone.dart:1100:19)
E/flutter (11855): #21     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7)
E/flutter (11855): #22     _invoke1 (dart:ui/hooks.dart:267:10)
E/flutter (11855): #23     _dispatchPointerDataPacket (dart:ui/hooks.dart:176:5)
E/flutter (11855): 

你可以在下面看到我上传页面的代码:

import 'dart:io';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';

class UploadPage extends StatefulWidget 
  @override
  _UploadPageState createState() => _UploadPageState();


class _UploadPageState extends State<UploadPage> 

  PickedFile file;

  captureImageWithCamera() async 
    Navigator.pop(context);
    final picker = ImagePicker();
    PickedFile imageFile = await picker.getImage(
      source: ImageSource.camera,
      maxHeight: 680,
      maxWidth: 970,
    );
    imageFile = PickedFile(imageFile.path);
    setState(() 
      this.file = imageFile;
    );
  

  pickImageFromGallery() async 

    Navigator.pop(context);
    final picker = ImagePicker();
    PickedFile imageFile = await picker.getImage(
      source: ImageSource.gallery,
      maxHeight: 680,
      maxWidth: 970,
    );
    imageFile = PickedFile(imageFile.path);
    setState(() 
      this.file = imageFile;
    );
  

  takeImage(mContext)
    return showDialog(
        context: mContext,
        builder: (context)
          return SimpleDialog(
            title: Text("New Post", style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold),),
            children: [
              SimpleDialogOption(
                child: Text("Capture image with camera", style: TextStyle(color: Colors.white),),
                onPressed: captureImageWithCamera,
              ),
              SimpleDialogOption(
                child: Text("Select image from gallery", style: TextStyle(color: Colors.white),),
                onPressed: pickImageFromGallery,
              ),
              SimpleDialogOption(
                child: Text("Cancel", style: TextStyle(color: Colors.white),),
                onPressed: () => Navigator.pop(context),
              ),

            ],
          );
        
    );
  

  displayUploadScreen()
    return Container(
      color: Theme.of(context).accentColor.withOpacity(0.5),
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Icon(Icons.add_a_photo, color: Colors.grey,size: 200.0,),
          Padding(
            padding: EdgeInsets.only(top: 20.0),
            child: RaisedButton(
              shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(9.0),),
              child: Text("Upload Image", style: TextStyle(color: Colors.white, fontSize: 20.0),),
              color: Colors.green,
              onPressed: () => takeImage(context),
            ),
          ),
        ],
      ),
    );
  


  @override
  Widget build(BuildContext context) 
    return displayUploadScreen();
  

如果您想查看我想与您分享的代码或其他文件。你能指导我吗?

提前谢谢你。

问候, 伊健。

【问题讨论】:

您好 Ekin,您使用的是什么依赖项? 您好,您可以在下面看到我的依赖项,并且我在上面的问题中添加了:flutter: sdk: flutter cloud_firestore: ^0.14.0+2 image: ^2.0.7 animator: 0.1.4 image_picker: ^0.6.7+7 google_sign_in: ^4.5.3 timeago: 2.0.17 cached_network_image: firebase_auth: ^0.18.0+1 geolocator: 5.0.1 uuid: ^2.0.0 cupertino_icons: ^0.1.2 path_provider: ^0.5 .0+1 firebase_messaging: ^7.0.0 firebase_storage: ^4.0.0 firebase_core: ^0.5.0 flutter_svg: ^0.19.0 你在什么设备上运行?例如模拟器、手机 我在模拟器上运行,它是具有播放服务的 Pixel 3a API 30。顺便说一句,我已经更新了我上面的问题。这些附加信息可能会对您有所帮助。 此时会抛出错误 【参考方案1】:

试试这个代码 导入“飞镖:io”;

import 'package:firebase_storage/firebase_storage.dart'; // For File Upload To Firestore    
import 'package:flutter/material.dart';    
import 'package:image_picker/image_picker.dart'; // For Image Picker    
import 'package:path/path.dart' as Path; 

 class UploadImage extends StatelessWidget 
Future chooseFile() async     
   await ImagePicker.pickImage(source: ImageSource.gallery).then((image)     
     setState(()     
       _image = image;    
     );    
   );    
   
Future uploadFile() async     
   StorageReference storageReference = FirebaseStorage.instance    
       .ref()    
       .child('posts/$Path.basename(_image.path)');    
   StorageUploadTask uploadTask = storageReference.putFile(_image);    
   await uploadTask.onComplete;    
   print('File Uploaded');    
   storageReference.getDownloadURL().then((fileURL)     
     setState(()     
       _uploadedFileURL = fileURL;    
     );    
   );    
   
    

@override    
 Widget build(BuildContext context)     
   return Scaffold(    
     appBar: AppBar(    
       title: Text('Firestore File Upload'),    
     ),    
     body: Center(    
       child: Column(    
         children: <Widget>[    
           Text('Selected Image'),    
           _image != null    
               ? Image.asset(    
                   _image.path,    
                   height: 150,    
                 )    
               : Container(height: 150),    
           _image == null    
               ? RaisedButton(    
                   child: Text('Choose File'),    
                   onPressed: chooseFile,    
                   color: Colors.cyan,    
                 )    
               : Container(),    
           _image != null    
               ? RaisedButton(    
                   child: Text('Upload File'),    
                   onPressed: uploadFile,    
                   color: Colors.cyan,    
                 )    
               : Container(),    
           _image != null    
               ? RaisedButton(    
                   child: Text('Clear Selection'),    
                   onPressed: clearSelection,    
                 )    
               : Container(),    
           Text('Uploaded Image'),    
           _uploadedFileURL != null    
               ? Image.network(    
                   _uploadedFileURL,    
                   height: 150,    
                 )    
               : Container(),    
         ],    
       ),    
     ),    
   );



  

【讨论】:

没用,我猜这段代码不适合我的结构。另外,pickImage没有被使用,我们需要使用getImage()

以上是关于Flutter 和 Android Studio:找不到 providerinstaller 的本地模块描述符类的主要内容,如果未能解决你的问题,请参考以下文章

“flutter doctor”命令找不到安装在 Android Studio 中的 Flutter 和 Dart 插件

Flutter 未出现在 Android Studio 的语言和框架设置中

Flutter 未检测到 Android Studio

Android Studio 上的新 Flutter 项目

与 Windows 11 兼容的 Flutter 和 Android Studio 版本都有哪些?

如何使用 Android Studio 在 Flutter 中构建 .apk 和 .ipa?