android - 使用带有 Flutter 的 Firebase 数据库的权限被拒绝?
问题描述
我正在用 Firebase 学习 Flutter,我想用 Firebase 数据库执行 Crud 操作。
Firebase 规则是:
"rules": {
".read": true,
".write": true
}
代码
import 'package:flutter/material.dart';
import 'package:firebase_database/firebase_database.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
primarySwatch: Colors.red,
// This makes the visual density adapt to the platform that you run
// the app on. For desktop platforms, the controls will be smaller and
// closer together (more dense) than on mobile platforms.
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: FirebaseDemoScreen(),
);
}
}
class FirebaseDemoScreen extends StatelessWidget {
final databaseReference = FirebaseDatabase.instance.reference();
@override
Widget build(BuildContext context) {
// TODO: implement build
return Scaffold(
appBar: AppBar(
title: Text('Firebase Connect'),
),
body: Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
RaisedButton(
child: Text('Create Record'),
onPressed: () {
createRecord();
},
),
RaisedButton(
child: Text('View Record'),
onPressed: () {
getData();
},
),
RaisedButton(
child: Text('Update Record'),
onPressed: () {
updateData();
},
),
RaisedButton(
child: Text('Delete Record'),
onPressed: () {
deleteData();
},
),
],
)
), //center
);
}
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'
});
}
void getData(){
databaseReference.once().then((DataSnapshot snapshot) {
print('Data : ${snapshot.value}');
});
}
void updateData(){
databaseReference.child('1').update({
'description': 'J2EE complete Reference'
});
}
void deleteData(){
databaseReference.child('1').remove();
}
}
它会导致错误:
[ERROR:flutter/lib/ui/ui_dart_state.cc(166)] 未处理的异常:PlatformException(-3, Permission denied, ) E/flutter (31408): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs .dart:569:7) E/flutter (31408): #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:159:18) E/flutter (31408): E/flutter (31408): #2 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:332:12) E/flutter (31408): #3 DatabaseReference.set (package:firebase_database/src/database_reference.dart:74:31) E /flutter (31408): #4 FirebaseDemoScreen.createRecord (package:learn/main.dart:77:32) E/flutter (31408): #5 FirebaseDemoScreen.build。(package:learn/main.dart:42:19) E/flutter (31408): #6 _InkResponseState._handleTap (package:flutter/src/material/ink_well. dart:953:19) E/flutter (31408): #7 _InkResponseState.build。(package:flutter/src/material/ink_well.dart:1059:38) E/flutter (31408): #8 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24) E/flutter ( 31408): #9 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:522:11) E/flutter (31408): #10 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart: 282:5) E/flutter (31408): #11 BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:217:7) E/flutter (31408): #12 PrimaryPointerGestureRecognizer.handleEvent (package:flutter/ src/gestures/recognizer.dart:475:9) E/flutter (31408): #13 PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:76:12) E/flutter (31408): #14指针路由器。_dispatchEventToRoutes。(package:flutter/src/gestures/pointer_router.dart:122:9) E/flutter (31408): #15 _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:377:8) E/flutter (31408) : #16 PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:120:18) E/flutter (31408): #17 PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:106: 7) E/flutter (31408): #18 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:218:19) E/flutter (31408): #19 GestureBinding.dispatchEvent (package:flutter/src/手势/绑定.dart:198:22) E/flutter (31408): #20 GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7) E/flutter (31408): #21 GestureBinding。 _flushPointerEventQueue(包:flutter/src/gestures/binding.dart:102:
解决方案
制定测试模式的规则尝试 [1]:https ://i.stack.imgur.com/Xeeis.png
推荐阅读
- python - 将(IDW)空间数据插入栅格的最佳方法是什么?[R]
- javascript - 我无法截取我的背景 iframe
- powerbi - 显示哪些行在两个表之间改变了状态
- vb.net - VB.NET - 来自 KML 文件的多边形中的点
- mysql - LEFT OUTER JOIN 检查不存在的关系 id
- asp.net-core-mvc - 如何在 ASP.NET Core MVC 中绑定 Part 视图和局部视图中的所有子模型
- c# - Android(Xamarin):BottomNavigationView 没有出现在正确的位置
- python - 我做了 FFT(快速傅里叶变换),但我无法理解......(python)
- svelte - 苗条的过渡:如何淡入,然后淡出?
- web-services - 有关如何从 Google Cloud Platform 调用外部网络服务的任何信息?