微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter 应用程序未与 Firebase 数据库连接

如何解决Flutter 应用程序未与 Firebase 数据库连接

Firebase 未正确初始化。您是否已将“google-services.json”文件添加到项目中?

我在同一路径添加了“google-services.json”文件。 我的存储数据实时数据库

并在主文件添加代码我认为这是一个解决方案,但我的问题没有解决

 WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();

/android/build.gradle

 buildscript {
      dependencies {
        // ... other dependencies
        classpath 'com.google.gms:google-services:4.3.3'
      }
    }

/android/app/build.gradle

android {

    defaultConfig {
        // Todo: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.example.Flutter_app_test"
        minSdkVersion 16
        targetSdkVersion 29
        versionCode FlutterVersionCode.toInteger()
        versionName FlutterVersionName
    }

}

我所有的库都是最新版本

型号代码

import 'package:firebase_database/firebase_database.dart';

class Reporting_Emergency {
  String _id;
  String _name;
  String _phone;
  String _type;
  String _location;
  Reporting_Emergency(this._id,this._name,this._phone,this._type,this._location);

  Reporting_Emergency.Map(dynamic obj){
    this._name = obj['name'];
    this._phone = obj['phone'];
    this._type = obj['type'];
    this._location = obj['location'];
  }

  String get id => _id;
  String get name => _name;
  String get phone => _phone;
  String get type => _type;
  String get location => _location;

  Reporting_Emergency.fromSnapShot(DataSnapshot snapShot){
    _id = snapShot.value ['id'];
    _name = snapShot.value['name'];
    _phone = snapShot.value['phone'];
    _type = snapShot.value['type'];
    _location = snapShot.value['location'];
  }

}

界面代码

import 'dart:async';
import 'package:Flutter/material.dart';
import 'package:marwa_app/component/myResponsiveLibrary.dart';
import 'package:marwa_app/component/logo.dart';
import 'package:marwa_app/component/MyDrawer.dart';
import 'package:geolocator/geolocator.dart';
import 'package:firebase_database/firebase_database.dart';
import 'package:marwa_app/model/reporting_model.dart';

class Reporting extends StatefulWidget {

  @override
  _ReportingState createState() => _ReportingState();
}

final reportingRef = FirebaseDatabase.instance.reference().child("data");
class _ReportingState extends State<Reporting> {
  final formKey = GlobalKey<FormState>();
  final scaffoldKey = GlobalKey<ScaffoldState>();
  List<Reporting_Emergency> items;
  StreamSubscription<Event> _onAdd;

  Reporting_Emergency _rep;

  TextEditingController _nameController;
  TextEditingController _phoneController;
  TextEditingController _typeController;
  double _lat;
  double _lon;

  // function to add new data
  _addFunction(Event event) {
    setState(() {
      items.add(new Reporting_Emergency.fromSnapShot(event.snapshot));
    });
  }



  Boxdecoration Boxdecoration() {
    return Boxdecoration(
      color: MainModel().mainColor,borderRadius: BorderRadius.all(Radius.circular(40.0)),BoxShadow: [
        BoxShadow(
          color: Colors.black.withOpacity(0.15),spreadRadius: 5,blurRadius: 5,offset: Offset(2,2),// changes position of shadow
        ),],);
  }

  TextStyle titleStyle() {
    return TextStyle(
        color: MainModel().whiteColor,fontSize: MainModel().setFont(MainModel().largeFont,getWidth()));
  }

  TextStyle textStyle() {
    return TextStyle(
      color: MainModel().whiteColor,fontSize: MainModel().setFont(MainModel().middleFont,getWidth()),);
  }

  double getWidth() {
    return MediaQuery.of(context).size.width;
  }

  @override
  void initState() {
    super.initState();
    items = new List();
    _onAdd = reportingRef.onChildAdded.listen(_addFunction);

    _nameController = new TextEditingController(text: _rep.name);
    _phoneController = new TextEditingController(text: _rep.phone);
    _typeController = new TextEditingController(text: _rep.type);
  }

  @override
  void dispose() {
    super.dispose();
    _onAdd.cancel();
  }

  @override
  Widget build(BuildContext context) {
    final widthScreen = MediaQuery.of(context).size.width;
    return Scaffold(
        key: scaffoldKey,backgroundColor: MainModel().mainColor,appBar: AppBar(
          backgroundColor: Color(0xff323266),leading: IconButton(
              icon: Icon(
                Icons.notifications_active,color: MainModel().thirdColor,),onpressed: () => {}),title: logo(),centerTitle: true,actions: [
            Builder(
              builder: (context) => IconButton(
                icon: Icon(
                  Icons.menu,onpressed: () => Scaffold.of(context).openEndDrawer(),tooltip: MaterialLocalizations.of(context).openAppDrawerTooltip,endDrawer: Drawer(
          child: MyDrawer(),body: ListView.builder(

            padding: EdgeInsets.only(top: MainModel().setPadding(MainModel().largePadding,widthScreen)),itemCount: items.length,itemBuilder: (context,position) {
              return Column(
                children: [
                  Form(
                      key: formKey,child: Column(
                        children: [
                          Directionality(
                            textDirection: TextDirection.rtl,child: Container(
                              padding: EdgeInsets.symmetric(horizontal: 20),margin: EdgeInsets.symmetric(horizontal: 20),alignment: Alignment.centerRight,decoration: Boxdecoration(),child: TextFormField(
                                controller: _nameController,textDirection: TextDirection.rtl,autofocus: true,decoration: Inputdecoration(
                                    border: InputBorder.none,hintStyle: textStyle(),hintText: 'الاسم الرباعي'),validator: (value) {
                                  if (value.isEmpty) {
                                    return "يرجى ادخل الاسم";
                                  } else {
                                    return null;
                                  }
                                },Padding(
                            padding: EdgeInsets.only(
                                top: MainModel().setPadding(
                                    MainModel().middlePadding,Directionality(
                            textDirection: TextDirection.rtl,child: TextFormField(
                                controller: _phoneController,keyboardType: TextInputType.number,hintText: 'رقم الهاتف'),validator: (value) {
                                  if (value.isEmpty) {
                                    return "يرجى ادخال رقم الهاتف";
                                  } else {
                                    return null;
                                  }
                                },child: TextFormField(
                                controller: _typeController,hintText: 'نوع الابلاغ'),validator: (value) {
                                  if (value.isEmpty) {
                                    return "يرجى ادخال نوع الابلاغ (الحالة)";
                                  } else {
                                    return null;
                                  }
                                },Container(
                            child: GestureDetector(
                                onTap: () async {
                                  bool isLocationServiceEnabled =
                                      await Geolocator
                                          .isLocationServiceEnabled();
                                  if (isLocationServiceEnabled == true) {
                                    Position position =
                                        await Geolocator.getCurrentPosition(
                                            desiredAccuracy:
                                                LocationAccuracy.high);
                                    _lon = position.longitude;
                                    _lat = position.latitude;
                                  } else {
                                    print(
                                        'امنح التطبيق من الوصول الى موقع... ثم اعد الارسال');
                                  }
                                },child: Image.asset('images/location.png')),Padding(
                              padding: EdgeInsets.only(
                                  bottom: MainModel().setPadding(
                                      MainModel().largePadding * 2,widthScreen))),RaisedButton(
                            onpressed: () {
                              if (_rep.id != null){
                                reportingRef.child(_rep.id).set({
                                  'name': _nameController.text,'phone': _phoneController.text,'type': _typeController.text,'location': '$_lat + $_lon'
                                }).then((_) => scaffoldKey.currentState.showSnackBar(SnackBar(
                                    content: Text('تم ارسال بياناتك .... '
                                        'سيتم التواصل معك من الجهات المختصة'))));
                              }
                            },child: Text('ارسال'),)
                        ],))
                ],);
            }));
  }
}

希望问题得到澄清

解决方法

除了将 Google-Services 添加到您的 Gradle 文件之外,我认为您可能还需要添加其他内容,例如 Firebase-Database 如需更多帮助,请参阅 this set-up guide

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?