# #ios #firebase #flutter
Вопрос:
Название говорит само за себя. Ниже приведены соответствующие классы и их соответствующие коды.
главная.дротик
... //Imports
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => NotificationService())
],
child: MaterialApp(
localizationsDelegates: [
GlobalMaterialLocalizations.delegate,
],
supportedLocales: [
const Locale('en', ''),
const Locale('pt', 'BR'),
],
home: MyHomePage(),
debugShowCheckedModeBanner: false,
),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: StartPage(),
),
);
}
}
Начальная страница.дротик
... //Imports
class StartPage extends StatelessWidget {
Future<void> init(BuildContext context) async {
Firebase.initializeApp(); //Firebase initialization
await Provider.of<NotificationService>(context, listen: false).init();
}
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: init(context),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting)
return LoadingSpinner();
else {
return StreamBuilder<User?>(
stream: AuthService().userChanges,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return LoadingSpinner();
} else {
print(snapshot.hasData);
return snapshot.hasData ? MainScreen() : AuthPage();
}
},
);
}
});
}
}
pubspec.yaml
...
version: 1.0.0 1
environment:
sdk: ">=2.12.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.2
flutter_spinkit: ^5.1.0
brasil_fields: ^1.1.4
image_picker: ^0.8.4 2
provider: ^6.0.0
firebase_auth: ^3.1.1
cloud_firestore: ^2.5.3
firebase_storage: ^10.0.3
firebase_core: ^1.7.0
firebase_messaging: ^10.0.7
flutter_typeahead: ^3.2.1
rxdart: ^0.27.2
table_calendar: ^3.0.2
flutter_form_builder: ^6.1.0 1
http: ^0.13.4
flutter_localizations:
sdk: flutter
version: ^0.0.0
dev_dependencies:
flutter_test:
sdk: flutter
...
Когда я пытаюсь запустить приложение на эмуляторе Android, даже на устройстве Android, оно работает нормально. Однако в эмуляторе iOS отображается следующая ошибка:
[VERBOSE-2:ui_dart_state.cc(209)] Unhandled Exception: [core/no-app] No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp()
Даже несмотря на то, что я вызываю Firebase.initializeApp на StartPage.dart асинхронным методом. Пожалуйста, помогите!
Ответ №1:
Вы пробовали это сделать?
Future<void> init(BuildContext context) async {
WidgetsFlutterBinding.ensureInitialized();//Add this line
Firebase.initializeApp(); //Firebase initialization
await Provider.of<NotificationService>(context, listen: false).init();
}
Но, согласно документации, это в основном(){}
void main() {
WidgetsFlutterBinding.ensureInitialized();
runApp(App());
}
Комментарии:
1. Я не делал этого раньше, сделал сейчас, и это сработало! Хотя это не сработало на main, только в init. Спасибо!
2. Пожалуйста.