如何解决firebase 与 flutter 应用程序没有连接
有什么问题吗? 在非连接小部件运行之后,加载小部件正在工作 我该如何解决这个问题
我的代码:
import 'package:Flutter/cupertino.dart'; import 'package:Flutter/material.dart'; import 'package:Flutter/services.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:cloud_firestore/cloud_firestore.dart'; import 'package:firebase_core/firebase_core.dart';
class Reporting extends StatefulWidget { @override
_ReportingState createState() => _ReportingState(); }
class _ReportingState extends State<Reporting> { final formKey = GlobalKey<FormState>(); final scaffoldKey = GlobalKey<ScaffoldState>();
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; }
final _name = TextEditingController(); final _phone = TextEditingController(); final _emType = TextEditingController(); double lat; double lon; bool _initialized = false; bool _error
= false;
void initializeFlutterFire() async {
try {
await Firebase.initializeApp();
setState(() {
_initialized = true;
});
} catch(e) {
// Set `_error` state to true if Firebase initialization fails
setState(() {
_error = true;
});
} }
@override void initState() {
initializeFlutterFire();
super.initState(); } @override Widget build(BuildContext context) {
if(_error) {
return notConnection();
}
if (!_initialized) {
return Loading();
}
return isConnection(); }
Widget isConnection() {
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(
padding: EdgeInsets.only(
top: MainModel()
.setPadding(MainModel().largePadding,widthScreen)),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: _name,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: _phone,keyboardType: TextInputType.number,hintText: 'رقم الهاتف'),validator: (value) {
if (value.isEmpty) {
return "يرجى ادخال رقم الهاتف";
} else {
return null;
}
},child: TextFormField(
controller: _emType,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: () {
Firebase.initializeApp();
if (formKey.currentState.validate()) {
// save data in firebase
FirebaseFirestore.instance
.collection('Data')
.doc()
.set({
'name': _name,'phone': _phone,'em-type': _emType,});
scaffoldKey.currentState.showSnackBar(SnackBar(
content: Text('تم ارسال بياناتك .... '
'سيتم التواصل معك من الجهات المختصة')));
}
},child: Text('ارسال'),)
],))
],)); }
Widget notConnection() {
final widthScreen = MediaQuery.of(context).size.width;
return Scaffold(
key: scaffoldKey,body: ListView(
padding: EdgeInsets.only(
top: MainModel()
.setPadding(MainModel().largePadding,children: [
Container(
child: Center(
child: Text('not Connection of Database'),)
])); }
Widget Loading() {
final widthScreen = MediaQuery.of(context).size.width;
return Scaffold(
key: scaffoldKey,body: Container(
child: Center(
child: Text('Loading'),)
); } }
我在编译器上没有任何错误,但没有连接 firebase。 只是我想从 textfeild 获取数据并保存在 firebase 中。 我的数据是(姓名、电话、位置、紧急情况类型)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。