কোনও ফায়ারবেস অ্যাপ '[খেলাপি'] তৈরি করা হয়নি - ফ্লোটার এবং ফায়ারবেসে ফায়ারব্যাস.ইনটিইলাইজ অ্যাপ () কল করুন


137

আমি একটি ফ্লটার অ্যাপ তৈরি করছি এবং আমি ফায়ারবেস একীভূত করেছি তবে রেজিস্টার, লগইন বা লগআউট করার জন্য আমি কোনও বোতামে ক্লিক করলে আমি এই ত্রুটিটি পেয়ে যাচ্ছি। আমি দেখেছি অন্য লোকেরাও একই প্রশ্ন জিজ্ঞাসা করেছে তবে কেউই আমার পক্ষে কাজ করছে বলে মনে হয় না। আমি তোলা এবং অ্যান্ড্রয়েড স্টুডিও ব্যবহার করছি। কোন সাহায্য করতে পারেন?

এটি আমার কোডের একটি অংশ

    class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.red,
      body: Center(
        child: Container(
          child: RaisedButton(
            onPressed: () {            
              FirebaseAuth.instance.signOut().then((value) {
                Navigator.pushReplacement(
                    context,
                    MaterialPageRoute(
                        builder: (context) =>
                            LoginScreen()));
              });
            },
            child: Text("Logout"),
          )
        )
      )
    );
  }
}

নীচে নিক্ষেপ করা ব্যতিক্রম আছে

══╡ EXCEPTION CAUGHT BY GESTURE ╞═══════════════════════════════════════════════════════════════════
The following FirebaseException was thrown while handling a gesture:
[core/no-app] No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp()

When the exception was thrown, this was the stack:
#0      MethodChannelFirebase.app (package:firebase_core_platform_interface/src/method_channel/method_channel_firebase.dart:118:5)
#1      Firebase.app (package:firebase_core/src/firebase.dart:52:41)
#2      FirebaseAuth.instance (package:firebase_auth/src/firebase_auth.dart:37:47)
#3      _HomeScreenState.build.<anonymous closure> (package:cosytok/screens/home.dart:20:28)
#4      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:992:19)
#5      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:1098:38)
#6      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:184:24)
#7      TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:524:11)
#8      BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:284:5)
#9      BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:219:7)
#10     PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:477:9)
#11     PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:78:12)
#12     PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:124:9)
#13     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:377:8)
#14     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:122:18)
#15     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:108:7)
#16     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:220:19)
#17     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:200:22)
#18     GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:158:7)
#19     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:104:7)
#20     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:88:7)
#24     _invoke1 (dart:ui/hooks.dart:267:10)
#25     _dispatchPointerDataPacket (dart:ui/hooks.dart:176:5)
(elided 3 frames from dart:async)

Handler: "onTap"
Recognizer:
  TapGestureRecognizer#f0104
════════════════════════════════════════════════════════════════════════════════════════════════════

════════ Exception caught by gesture ═══════════════════════════════════════════════════════════════
The following FirebaseException was thrown while handling a gesture:
[core/no-app] No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp()

উত্তর:


322

2020 সালের 17 আগস্ট থেকে শুরু হচ্ছে

সমস্ত ফায়ারবেস সংস্করণ আপডেট করা হয়েছে এবং এখন যে Firebase.initializeApp()কোনও ফায়ারবেস পণ্য ব্যবহার করার আগে আপনাকে কল করতে হবে , উদাহরণস্বরূপ:

প্রথমত, সমস্ত ফায়ারবেস পণ্য এখন firebase_coreসংস্করণ (0.5.0+) এর উপর নির্ভর করে , সুতরাং আপনাকে এটিকে pubspec.yamlফাইলটিতে যুক্ত করতে হবে:

dependencies:
  flutter:
    sdk: flutter
  firebase_core : ^0.5.0
  # cloud_firestore: ^0.14.0 other firebase dependencies

তারপরে আপনাকে কল করতে হবে Firebase.initializeApp():

প্রথম উদাহরণ

import 'package:flutter/material.dart';

// Import the firebase_core plugin
import 'package:firebase_core/firebase_core.dart';

void main() {
  runApp(App());
}

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
      // Initialize FlutterFire
      future: Firebase.initializeApp(),
      builder: (context, snapshot) {
        // Check for errors
        if (snapshot.hasError) {
          return SomethingWentWrong();
        }

        // Once complete, show your application
        if (snapshot.connectionState == ConnectionState.done) {
          return MyAwesomeApp();
        }

        // Otherwise, show something whilst waiting for initialization to complete
        return Loading();
      },
    );
  }
}

ফায়ার স্টোর সহ দ্বিতীয় উদাহরণ:

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: FirstRoute(title: 'First Route'),
    );
  }
}

class FirstRoute extends StatefulWidget {
  FirstRoute({Key key, this.title}) : super(key: key);
  final String title;

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

class _FirstRouteState extends State<FirstRoute> {
  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text("test"),
        ),
        body: FutureBuilder(
          future: getData(),
          builder: (context, AsyncSnapshot<DocumentSnapshot> snapshot) {
            if (snapshot.connectionState == ConnectionState.done) {
              return Column(
                children: [
                  Container(
                    height: 27,
                    child: Text(
                      "Name: ${snapshot.data.data()['name']}",
                      overflow: TextOverflow.fade,
                      style: TextStyle(fontSize: 20),
                    ),
                  ),
                ],
              );
            } else if (snapshot.connectionState == ConnectionState.none) {
              return Text("No data");
            }
            return CircularProgressIndicator();
          },
        ));
  }

  Future<DocumentSnapshot> getData() async {
    await Firebase.initializeApp();
    return await FirebaseFirestore.instance
        .collection("users")
        .doc("docID")
        .get();
  }
}

তৃতীয় উদাহরণ:

এটি আরম্ভ করুন initState()তারপরে কল করুন setState()যা build()পদ্ধতিটি কল করবে ।

  @override
  void initState() {
    super.initState();
    Firebase.initializeApp().whenComplete(() { 
      print("completed");
      setState(() {});
    });
  }

চতুর্থ উদাহরণ:

main()কল করার পরে পদ্ধতিতে এটি শুরু করুনWidgetsFlutterBinding.ensureInitialized();

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MyApp());
}

দ্রষ্টব্য : আপনাকে কেবল initializeApp()একবার কল করতে হবে


35
চতুর্থ উদাহরণ এটি হওয়া উচিত। শুধু async যুক্ত মনে রাখবেন। আমি অবাক হই যদি বিলম্ব লক্ষণীয় হয়।
রাইডে

12
হ্যাঁ, চতুর্থ উদাহরণটি সর্বোত্তম, কেবল সমস্ত উপায় দেখানোর জন্য ভেবেছিল, দ্বিতীয়টিও ভাল কারণ আপনি একই ফিউচারবিল্ডারে ফায়ারস্টোর বা রিয়েলটাইম ডেটাবেস থেকে প্রথম ডেটা পাওয়ার আগে কেবল সূচনা করতে পারেন
পিটার

4
ধন্যবাদ, এটি # 4 ব্যবহার করে কাজ করে। তবে আপনি যদি "পিছনে" বোতামটি চাপেন, আপনি যখন অ্যাপ্লিকেশনটিতে ফিরে যান, এটি একই জিনিসটি বলে "নো ফায়ারবেস অ্যাপ '[DEFAULT]' তৈরি করা হয়েছে - ফায়ারবেস.ইনটিইলাইজ অ্যাপ () কল করুন যদিও এটি মূল ()
অক্টোবরে 23:59

4
@ মিশেলডিসিওসিওসিও ফ্লার্ট ফ্রেমওয়ার্কটি ফ্ল্যাটার ইঞ্জিনের সাথে ইন্টারঅ্যাক্ট করতে সক্ষম হতে উইজেটবাইন্ডিং ব্যবহার করেছে। আপনি যখন কল করেন তখন ensureInitislizedএটির একটি উদাহরণ তৈরি হয় Widgetbindingএবং যেহেতু Firebase.initializeApp()নেটিভ কল করতে প্ল্যাটফর্ম চ্যানেলগুলি ব্যবহার করা প্রয়োজন তখন আপনাকে বাইন্ডিংটি ইনলাইজ করতে হবে। api.flutter.dev/flutter/widgets/WidgetsFlutterBinding…… (প্ল্যাটফর্ম চ্যানেল গুলোয় ইঞ্জিনে রয়েছে)
পিটার

4
# 4 সরবরাহকারীদের সাথে কাজ করছে বলে মনে হচ্ছে না (প্রাথমিকভাবে একই ত্রুটি বার্তা)
11:30 এ

46
  1. Pubspec.yaml এ যুক্ত করুন

    firebase_core :
    
  2. main.dart এ যুক্ত করুন

    import 'package:firebase_core/firebase_core.dart';
    
    void main() async {
       WidgetsFlutterBinding.ensureInitialized();
       await Firebase.initializeApp();
       runApp(MyApp());
    }
    

4
এই লাইনগুলি দেবে: lib / main.dart: 6: 9: ত্রুটি: প্রাপ্তি পাওয়া যায় নি: 'ফায়ারবেস'। ফায়ারবেস.ইনাইটালাইজ অ্যাপ () অপেক্ষা করুন; ^^^^^^^^
Kaspar এল Palgi

আমি ফায়ারবেস_কোর চাপিয়ে দিতে ভুলে গেছি। ওটা করেছিলাম. এখন: এই লাইনগুলি দেবে: ই / বিড়বিড় (24294): [ইআরআরআর: বিড়বিড় / লিবি / ইউআই / ui_dart_state.cc (166)] হাতছাড়া ব্যতিক্রম: [মূল / কোনও অ্যাপ্লিকেশন] কোনও ফায়ারবেস অ্যাপ '[খেলাপি]' করা হয়েছে তৈরি - কল করুন ফায়ারব্যাস.ইনটিয়লাইজ
অ্যাপ

এটি এখানে ফায়ারবেস.google.com/support/release-notes/android এ বলেছে যে: ফায়ারবেস অ্যান্ড্রয়েড লাইব্রেরি ফায়ারবেস-কোর আর দরকার নেই। এই এসডিকে Google অ্যানালিটিক্সের জন্য ফায়ারবেস এসডিকে অন্তর্ভুক্ত করা হয়েছে। এখন, অ্যানালিটিকস বা এমন একটি পণ্য যা বিশ্লেষণের ব্যবহারের প্রস্তাব দেয় (নীচে সারণী দেখুন), আপনাকে স্পষ্টভাবে বিশ্লেষণ নির্ভরতা যুক্ত করতে হবে: com.google.firebase: ফায়ারবেস-বিশ্লেষণ: 17.5.0 বা com.google.firebase: ফায়ারবেস -্যানালিটিক্স-কেটিএক্স: 17.5.0।
কাস্পার এল পালজি

কি হবে যদি ইনিশিয়ালাইজ অ্যাপ ক্রাশ হয়ে যায়? অ্যাপ্লিকেশন উইল শুরু হয়নি। আমি সম্ভবত এই সমস্যা সম্পর্কে কিছুই খুঁজে পাইনি।
বরিস স্যালিমভ

@BorisSalimov কারণ initializeApp()একটি ASYNC কল, অ্যাপ্লিকেশন এখনও এমনকি শুরু হবে তা করতে ব্যর্থ হলে
21rw

11

আপনি যদি ফ্লিটার অ্যাপ্লিকেশনটির সাথে ফায়ারবেসটি সংযোগ করতে চান তবে আপনাকে ফায়ারবেস ব্যবহারের আগে ইনিটালাইজ্ট করতে হবে। আপনি নীচে প্রদত্ত হিসাবে এটি ঘোষণা করতে পারেন এবং এটি আপনাকে সমস্যার সমাধান করতে সহায়তা করবে

void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}

ভিডিওতে আপনি ত্রুটি সম্পর্কে বিস্তারিত পাবেন


এটি আমাকে একটি ত্রুটি দেখায় - নিম্নলিখিত NoSuchMethodError নিক্ষেপকারী বিল্ডার নিক্ষেপ করা হয়েছিল: I / flutter (5612): পদ্ধতিটি 'তখন' নালায় ডাকা হয়েছিল। আই / বিড়বিড় (5612): রিসিভার: নাল আই / ফ্লটার (5612): কল করার চেষ্টা করা হয়েছে: তাহলে (বন্ধ: (গতিশীল) => নাল)
আবির আহসান

লিঙ্কে থাকা ভিডিওটি অনুসরণ করুন, আপনার সমস্যা সমাধান হবে। যদি এখনও ত্রুটির মুখোমুখি হন তবে আমাকে জানান me
রাজু গুপ্ত


4

@ পিটারের উত্তরটি পারফেক্ট !! তবে আপনি যদি এখনও আপনার কোডটিতে ত্রুটি পেয়ে থাকেন এবং ফ্লোটার ফায়ারবেস কোডল্যাব অনুসরণ করেন তবে মনে রাখবেন যে এই টিউটোরিয়ালগুলি অগাস্ট 2020 এর মধ্যে পুরানো এবং এখনও আপডেট হয়নি। আপনাকে আরও অনেক পরিবর্তন করতে হবে যেমন:

  • .dataসঙ্গে প্রতিস্থাপন.data()
  • updateDataসঙ্গে প্রতিস্থাপনupdate

আশা করি এটি আমার মতো কিছু নবজাতককে সহায়তা করতে পারে।


3

অ্যাপটিকে মূল স্ক্রিনে রেখে যাওয়ার পরেও যদি আপনার সমস্যা হয় তবে আপনি .dartফায়ারবেস ব্যবহার করে যে কোনও ফাইলটিতে এটি যুক্ত করতে পারেন :

class App extends StatelessWidget {
  
  final Future<FirebaseApp> _initialization = Firebase.initializeApp();

  @override
  Widget build(BuildContext context) {

বা এর ক্ষেত্রে StatefulWidget:

import 'package:flutter/material.dart';

// Import the firebase_core plugin
import 'package:firebase_core/firebase_core.dart';

void main() {
  runApp(App());
}

class App extends StatefulWidget {
  _AppState createState() => _AppState();
}

class _AppState extends State<App> {
  // Set default `_initialized` and `_error` state to false
  bool _initialized = false;
  bool _error = false;

  // Define an async function to initialize FlutterFire
  void initializeFlutterFire() async {
    try {
      // Wait for Firebase to initialize and set `_initialized` state to true
      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) {
    // Show error message if initialization failed
    if(_error) {
      return SomethingWentWrong();
    }

    // Show a loader until FlutterFire is initialized
    if (!_initialized) {
      return Loading();
    }

    return MyAwesomeApp();
  }
}

আরও তথ্যের জন্য এই লিঙ্কটি চেক করুন


আমি যদি ডকুমেন্টেশনের মতো একই পদ্ধতিটি করি তবে ত্রুটিটি পাচ্ছি। এখানে ত্রুটি No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp() । আমি ইতিমধ্যে রাষ্ট্রীয় উইজেটে ফায়ারবেস শুরু করেছি।
বিকান্ত অগ্রহরি

3

আপনি যদি পিটারের উত্তর অনুসরণ করে থাকেন এবং এখনও একই ত্রুটিটি পেয়ে থাকেন তবে আপনার mainফাংশনে থাকা অন্য কোনও কিছু await Firebase.initializeApp()কল আসার পরে আসে কিনা তা নিশ্চিত করে দেখুন :

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
  FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;
  runApp(MyApp());
}

ধন্যবাদ @ পিটারের উত্তর যদিও সাহায্য করেছে
কবি ছাড়

2

1 ম এই নির্ভরতা যুক্ত করুন:

firebase_core :

২ য়: প্রকল্পের মূল কার্যক্রমে এই 2 টি লাইন যুক্ত করুন এবং ফাংশনটিকে অ্যাসিঙ্ক করুন

 void main() async {
  // these 2 lines
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  //
  runApp(MyApp());
}

এখন আপনি প্রকল্পের যে কোনও ফাইল বা উইজেটে ফায়ারবেস ব্যবহার করতে পারেন।

ফিউচারবিল্ডার উইজেটটিও খুব কার্য করবে তবে প্রতিবার ফায়ারবেস অ্যাক্সেস করতে চাইলে এটি অবশ্যই যুক্ত করতে হবে।


1

আপনি যোগ করা প্রয়োজন await Firebase.initializeApp(); যা a Future। নীচের মতো আপনার ফায়ারবেস ফাংশনটি চালাচ্ছে এমন ডার্ট ফাইলের মধ্যে এটি করুন:

import 'package:firebase_core/firebase_core.dart';
...

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MaterialApp());
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.