Flutter桌面端核心功能支持插件firebase_core_desktop的使用

Flutter桌面端核心功能支持插件 firebase_core_desktop 的使用

简介

firebase_core_desktop 是一个Flutter插件,用于在Linux和Windows平台上使用Firebase Core API。这个插件允许连接到多个Firebase应用。

更多关于Firebase的信息,请访问 Firebase官网

开始使用

安装

  1. 在项目根目录下运行以下命令来添加依赖:

    flutter pub add firebase_core
    flutter pub add firebase_core_desktop
    

    注意: firebase_core_desktop 是主要 firebase_core 插件的平台实现,因此如果还没有安装 firebase_core,则必须同时安装这两个包。

  2. 导入相关包:

    import 'package:firebase_core/firebase_core.dart';
    

使用方法

初始化默认应用

与iOS、Android、macOS和Web不同,初始化默认的Firebase应用不需要特定平台的配置文件。相反,直接在代码中通过 initializeApp 方法传入选项即可:

const firebaseOptions = FirebaseOptions(
  appId: '...',
  apiKey: '...',
  projectId: '...',
  messagingSenderId: '...',
  authDomain: '...',
);

await Firebase.initializeApp(options: firebaseOptions);

如果你将代码推送到公共仓库,建议将配置作为环境变量传递:

const firebaseOptions = FirebaseOptions(
  appId: const String.fromEnvironment('FIREBASE_APP_ID'),
  apiKey: const String.fromEnvironment('FIREBASE_API_KEY'),
  projectId: const String.fromEnvironment('FIREBASE_PROJECT_ID'),
  messagingSenderId: const String.fromEnvironment('FIREBASE_SENDER_ID'),
  authDomain: const String.fromEnvironment('FIREBASE_AUTH_DOMAIN'),
);

注意: 初始化应在任何其他FlutterFire插件使用之前完成。

初始化辅助应用

要初始化辅助应用,只需在调用 initializeApp 方法时提供名称:

await Firebase.initializeApp(app: 'foo', options: firebaseOptions);

查看 完整示例 获取更多信息。

示例代码

以下是基于官方提供的示例代码的一个简单应用,展示了如何初始化和管理多个Firebase应用实例:

// ignore_for_file: public_member_api_docs

import 'dart:async';
import 'dart:developer';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  String get name => 'foo';

  FirebaseOptions get firebaseOptions => const FirebaseOptions(
        appId: '1:448618578101:ios:0b650370bb29e29cac3efc',
        apiKey: 'AIzaSyAgUhHU8wSJgO5MVNy95tMT07NEjzMOfz0',
        projectId: 'react-native-firebase-testing',
        messagingSenderId: '448618578101',
      );

  Future<void> initializeDefault() async {
    final app = await Firebase.initializeApp(options: firebaseOptions);
    log('Initialized default app $app');
  }

  Future<void> initializeSecondary() async {
    final app = await Firebase.initializeApp(
      name: name,
      options: firebaseOptions,
    );
    log('Initialized $app');
  }

  void apps() {
    final apps = Firebase.apps;
    log('Currently initialized apps: $apps');
  }

  void options() {
    final app = Firebase.app(name);
    final options = app.options;
    log('Current options for app $name: $options');
  }

  Future<void> delete() async {
    final app = Firebase.app(name);
    await app.delete();
    log('App $name deleted');
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Firebase Core example app'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(20),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.spaceAround,
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: <Widget>[
              ElevatedButton(
                onPressed: initializeDefault,
                child: const Text('Initialize default app'),
              ),
              ElevatedButton(
                onPressed: initializeSecondary,
                child: const Text('Initialize secondary app'),
              ),
              ElevatedButton(
                onPressed: apps,
                child: const Text('Get apps'),
              ),
              ElevatedButton(
                onPressed: options,
                child: const Text('List options'),
              ),
              ElevatedButton(
                onPressed: delete,
                child: const Text('Delete app'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter桌面端核心功能支持插件firebase_core_desktop的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter桌面端核心功能支持插件firebase_core_desktop的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter桌面端项目中集成firebase_core_desktop插件,可以为你提供Firebase服务的核心功能支持。以下是一个基本的代码案例,展示如何在Flutter桌面端项目中配置和使用firebase_core_desktop插件。

1. 配置项目

首先,你需要在你的Flutter项目中添加firebase_corefirebase_core_desktop依赖。打开你的pubspec.yaml文件,并添加以下依赖:

dependencies:
  flutter:
    sdk: flutter
  firebase_core: ^x.y.z  # 替换为最新版本号
  firebase_core_desktop: ^x.y.z  # 替换为最新版本号,注意这个包只在桌面平台上有效

确保你使用的是支持桌面端的最新版本的Flutter和Firebase插件。

2. 初始化Firebase

接下来,在你的Flutter应用的入口文件(通常是lib/main.dart)中,初始化Firebase。

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化Firebase应用
  try {
    await Firebase.initializeApp();
    print('Firebase initialized successfully');
    runApp(MyApp());
  } catch (e) {
    print('Failed to initialize Firebase: ${e.message}');
  }
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Firebase Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Firebase Demo'),
      ),
      body: Center(
        child: Text('Firebase is initialized!'),
      ),
    );
  }
}

3. 配置Firebase项目

在Firebase控制台中创建一个新的Firebase项目,并添加你的Flutter桌面应用。你需要下载GoogleService-Info.plist(对于macOS和iOS,尽管桌面端主要关注Windows和Linux,但某些配置可能仍然需要)和GoogleService-Info.json(对于Android和桌面端,特别是如果你也计划在其他平台上运行你的应用)。

对于桌面端(Windows和Linux),你需要将GoogleService-Info.json文件放在你的项目根目录或指定的配置目录中。确保文件内容正确,并且与你的Firebase项目设置相匹配。

4. 运行项目

确保你的开发环境已经设置好Flutter桌面端的支持(例如,安装了Flutter的桌面端嵌入库)。然后,你可以使用以下命令来运行你的Flutter桌面应用:

flutter run -d windows  # 对于Windows
flutter run -d linux    # 对于Linux
flutter run -d macos    # 对于macOS(虽然这不是典型的“桌面端”定义,但仍然支持)

注意事项

  • firebase_core_desktop插件是专门为桌面平台(Windows、macOS、Linux)设计的,因此它不会在非桌面平台上生效。
  • 确保你已经在Firebase控制台中正确配置了你的应用,并下载了相应的配置文件。
  • 初始化Firebase时,请确保捕获并处理任何可能的异常,以避免应用崩溃。

通过上述步骤,你应该能够在Flutter桌面端项目中成功集成并使用firebase_core_desktop插件。

回到顶部