添加 firebase_database 依赖项后,Flutter 应用程序不会停止安装

Flutter app does not stop installing when firebase_database depencancy is added

我是 flutter 编程的新手,我正在使用 firebase ml 套件和 firebase 数据库构建一个简单的应用程序。这是我创建移动钱包的大学项目的一部分。在这里,我正在做的是通过 ml vision kit 扫描 credit/debit 卡以获取卡的详细信息,并将其存储在 firebase 数据库中。扫描部分 运行 正确,当我添加数据库依赖项时,该应用程序甚至没有安装。调试时它给出 注意:C:\Users\SKYWALKER\AppData\Roaming\Pub\Cache\hosted\pub.dartlang.org\firebase_core-0.2.5+1\android\src\main\java\io\flutter\plugins\firebase\core\FirebaseCorePlugin.java 使用未经检查或不安全的操作。

这是我的 pubspec.yaml 文件。


environment:
  sdk: ">=2.1.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  image_picker:
  firebase_ml_vision: ^0.9.0+3
  #firebase_database: ^2.0.2
  #firebase_core: ^0.3.4
  path_provider: ^1.4.4
  firebase_database: 1.0.3

  cupertino_icons: ^0.1.2
  charts_flutter: ^0.6.0
  rxdart: ^0.19.0
  flutter_swiper: ^1.1.4
  qr_code_scanner: ^0.0.12
  flutter_card_io:
    git:
      url: git://github.com/procedurallygenerated/flutter_card_io.git

dev_dependencies:
  flutter_test:
    sdk: flutter

flutter:
  uses-material-design: true

  assets:
    - assets/images/
    - assets/images/users/
    - assets/visa_logo.png
    - assets/creditcardchipsilver.png
    - assets/card_band.jpg
    - assets/card_back.jpg
    - assets/initialData.json

  fonts:
    - family: Varela
      fonts:
        - asset: assets/fonts/VarelaRound-Regular.ttf

这是两个函数

import 'package:image_picker/image_picker.dart';
import 'package:firebase_ml_vision/firebase_ml_vision.dart';
import 'package:firebase_database/firebase_database.dart';

final databaseReference = FirebaseDatabase.instance.reference();

class AddCardPage extends StatefulWidget {
  @override
  AddCardPageState createState() => AddCardPageState();
}


class AddCardPageState extends State<AddCardPage> {
  File pickedImage;
  bool isImageLoaded = false;
  PaymentCard card1 = new PaymentCard();
  static int id;
  String encryptedCardNumber = "";
  CreditCardModel card2 = new CreditCardModel("", "", "", "");

//the create record is a testing code
  void createRecord(){
    databaseReference.child("1").set({
      'title': 'Mastering EJB',
      'description': 'Programming Guide for J2EE'
    });
    databaseReference.child("2").set({
      'title': 'Flutter in Action',
      'description': 'Complete Programming Guide to learn Flutter'
    });
  } 

  Future pickImage() async
  {
    var tempStore = await ImagePicker.pickImage(source: ImageSource.camera);
    if (mounted)
    {
      setState(() {
        pickedImage = tempStore;
        isImageLoaded = true;
      });
    }
    readText();
  }

  Future readText() async{
    String info;
    FirebaseVisionImage ourImage = FirebaseVisionImage.fromFile(pickedImage);
    TextRecognizer recognizeText = FirebaseVision.instance.textRecognizer();
    VisionText readText = await recognizeText.processImage(ourImage);
    info = readText.text;
    String text1;
    String txt;
    for(TextBlock block in readText.blocks)
    {
      for(TextLine line in block.lines)
      {
        txt = line.text;
        for(TextElement word in line.elements)
        {
          text1 = word.text;
        }
      }
    }
    //print(info);
    bool cardNumFound = false;
    bool expDateFound = false;
    for(var i = 0; i < info.length ; i++)
    {
      if(!cardNumFound)
      {
        if(info[i] == '4' || info[i] == '5')
        {
          card2.cardNumb=info.substring(i,i+19);
          cardNumFound = true;
        }
      }
      if(!expDateFound)
      {
        if(info[i] == '/')
        {
          card2.expire = info[i-2] + info[i-1] + info[i] + info[i+1] + info[i+2];
          expDateFound = true;
        }
      }
    }
    encrypt();
    print(card2.cNum);
    print(card2.expiryDate);
    createRecord();
  }
}

这是我尝试过的东西

  1. 使用旧版本 firebase_database 1.0.3
  2. 尝试在没有 firebase_database 的情况下进行调试。效果很好。应用运行正常。
  3. 尝试阅读 firebase_database 的文档并查找是否存在任何不兼容的依赖项。尽了最大的努力却没有结果。

请帮忙。非常感谢您的所有帮助。

我在您的 pubspec.yaml 文件中没有看到 firebase_auth。假设您已将 firebase 添加到您的应用程序 ( how to add firebase to app),每个用户在使用 firebase_database 之前都需要通过 firebase 的身份验证(如果数据库的响应速度对你很重要)。使用 firebase_core 启用与多个 Firebase 应用程序的连接。

请注意,要使最新版本的 firebase_auth 正常工作,您的项目需要符合 AndroidX (enter link description here)。

In the Project Gradle (project/app/build.gradle) add the following lines:

defaultConfig {
    ...

    multiDexEnabled true
}

dependencies {
    ...

    implementation 'com.android.support:multidex:1.0.3'
}

执行此操作后,通过单击“文件”>“使缓存无效并重新启动”来清理缓存并重新启动项目