Qasim Ali
Qasim Ali

Reputation: 444

Permission denied using Firebase database with Flutter?

I am learning Flutter with Firebase, and i want to perform Crud operations with firebase database. User interface

Firebase Rules are:

    "rules": {
    ".read": true,
    ".write": true
  }

Code

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();
}
}

It Causes an Error:

[ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: 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 PointerRouter._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/gestures/binding.dart:198:22) E/flutter (31408): #20 GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7) E/flutter (31408): #21 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102:7) E/flutter (31408): #22 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86:7) E/flutter (31408): #23 _rootRunUnary (dart:async/zone.dart:1206:13) E/flutter (31408): #24 _CustomZone.runUnary (dart:async/zone.dart:1100:19) E/flutter (31408): #25 _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7) E/flutter (31408): #26 _invoke1 (dart:ui/hooks.dart:281:10) E/flutter (31408): #27 _dispatchPointerDataPacket (dart:ui/hooks.dart:190:5)

Upvotes: 0

Views: 1805

Answers (3)

Qasim Ali
Qasim Ali

Reputation: 444

Solved I just Updated Android Studio, and then i restarted once invalidate cache and restarted android studio, Now its working for me.

Error

 plugin project :firebase_core_web not found

was error still but database connection with firebase is built with the same code and firebase rules.

Upvotes: 1

omar hatem
omar hatem

Reputation: 1979

You are probably trying to access the wrong place, check the database that you are trying to access

  1. Go to the "Database" option you mentioned.
  2. There on the Blue Header
  3. you'll find a dropdown which says Cloud Firestore Beta Change it to "Realtime database"
  4. Go to Rules and set .write .read both to true

https://github.com/firebase/quickstart-js/issues/239#issuecomment-417862631

https://github.com/firebase/quickstart-js/issues/239#issuecomment-465989989

You can refer to this issue for more answers if the previous one didn't do the trick for you

https://github.com/firebase/quickstart-js/issues/239

Upvotes: 1

Mohamed Inshaf
Mohamed Inshaf

Reputation: 395

make the rules to test mode an try [1]: https://i.sstatic.net/Xeeis.png

Upvotes: 2

Related Questions