使用Firebase插件解决Firebase问题
在pubspec.yaml文件中添加firebase_core插件和需要使用的Firebase服务的插件,例如:
dependencies:
flutter:
sdk: flutter
firebase_core: ^1.0.3
firebase_auth: ^1.0.3
在main.dart文件中初始化Firebase:
import 'package:firebase_core/firebase_core.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
然后可以在应用程序中使用Firebase服务。例如,在使用Firebase身份验证服务进行登录的示例中:
import 'package:firebase_auth/firebase_auth.dart';
final FirebaseAuth _auth = FirebaseAuth.instance;
Future signInWithGoogle() async {
// Google登录代码
}
Future signOutGoogle() async {
// Google注销代码
}
class MyApp extends StatelessWidget {
// ...
Widget _buildLoginButton(BuildContext context) {
return RaisedButton(
onPressed: () async {
UserCredential userCredential = await signInWithGoogle();
Scaffold.of(context).showSnackBar(
SnackBar(content: Text("${userCredential.user.displayName} 已登录")));
},
child: const Text('使用Google登录'),
);
}
Widget _buildLogoutButton(BuildContext context) {
return RaisedButton(
onPressed: () async {
await signOutGoogle();
Scaffold.of(context).showSnackBar(const SnackBar(content: Text('已注销')));
},
child: const Text('注销'),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Builder(builder: (BuildContext context) {
if (_auth.currentUser != null) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text(
'您已登录',
style: TextStyle(fontSize: 24),
),
const SizedBox(height: 24),
_buildLogoutButton(context),
],
),
);
} else {
return Center(
child: _buildLoginButton(context),
);
}
}),
);
}
}