因此,我在Firebase上建立了一个项目,并遵循了许多关于如何将Firebase连接到我的Flutter应用程序的教程。我从阅读FlutterFire文档开始,一步一步地,我设法安装了FlutterFire CLI。之后,我直接进入了阅读实时数据库部分,每当我试图写入数据库时,什么都没有发生。
数据库处于测试模式,firebase在项目内部正确初始化,我在尝试写入时没有得到任何错误,所以我认为即使是URL也是正确的(但我可能是错误的)
下面是我使用的代码:
import 'package:firebase_database/firebase_database.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'firebase_options.dart'; //generated with FlutterFire CLI
import 'package:firebase_core/firebase_core.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
await Firebase.initializeApp(
options: Platform.isWindows ? null : DefaultFirebaseOptions.currentPlatform, //not working on windows
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
MyApp({super.key});
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
final FirebaseDatabase database = FirebaseDatabase.instance;
final DatabaseReference ref = FirebaseDatabase.instance.ref("/");
void writeToFirebase() async {
print('wrote to database');
await ref.set({
'title': 'Hello World',
'body': 'This is my first post',
'userId': '123',
});
await ref.child('title').set('Hello World');
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: writeToFirebase,
tooltip: 'Increment',
child: const Icon(Icons.add),
),
floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat,
);
}
}
我注意到当print()
语句在ref.set()
之上时,我在控制台中看到输出。但是,如果我把它放在ref.set()
语句之下,我就看不到输出。所以,这使我认为ref.set()
永远不会结束它的执行或类似的东西。
我在学习Flutter2周,我真的不能使Firebase的工作
1条答案
按热度按时间t9aqgxwy1#
既然您正在使用
await
,那么您是否考虑过也使用try
-catch
,以便捕获和记录任何错误?因此: