首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Flutter Web应用程序中使用带有Firebase Emulators db的Firebase.dart?

如何在Flutter Web应用程序中使用带有Firebase Emulators db的Firebase.dart?
EN

Stack Overflow用户
提问于 2020-06-03 06:36:54
回答 1查看 979关注 0票数 2

我的应用程序是Flutter Web应用程序。它使用package:firebase/firebase.dart

我正在尝试使用Firebase Emulators UI。

该应用程序托管在Firebase上,并对Firestore进行读写。但是,当我使用firebase emulators:start时,localhost:5000上的本地托管应用程序仍然在访问生产Firestore数据库。

如何设置才能使本地运行的应用程序使用localhost:8080上的Firestore仿真器

我已经找到了像this这样的线程,但我没有使用cloud_firestore.dart。我尝试过类似的步骤(参见下面的更新),但它们在我的上下文中不起作用。

这是我的main.dart文件:

代码语言:javascript
复制
import 'package:algolia/algolia.dart';
import 'package:firebase/firebase.dart' as fb;
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:web_flutter/data/repository.dart';
import 'package:web_flutter/pages/auth/login.dart';
import 'package:web_flutter/pages/home/home_page.dart';
import 'package:web_flutter/services/authentication.dart';

Future<void> main() async {
  try {
    var app = fb.initializeApp(
        apiKey: 'someAPIkey',
        authDomain: 'some.domain.com',
        databaseURL: 'https://somedomain.firebaseio.com',
        projectId: 'myProj',
        storageBucket: '',
        messagingSenderId: 'someId',
        appId: '1:9anAppId');

    var searchClient = Algolia.init(
        applicationId: 'anAppId',
        apiKey: 'someAPIkey');

    runApp(MyApp(
        repository: Repository(app.firestore(), searchClient),
        authentication: Authentication(app.auth())));
  } on fb.FirebaseJsNotLoadedException catch (e) {
    print(e);
  }
}

class MyApp extends StatefulWidget {
  final Repository repository;
  final Authentication authentication;

  const MyApp({Key key, this.authentication, this.repository})
      : super(key: key);

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

有什么想法吗?

谢谢!

更新:我尝试了以下方法,但得到了相同的结果:

代码语言:javascript
复制
import 'package:algolia/algolia.dart';
import 'package:firebase/firebase.dart' as fb;
import 'package:firebase/src/firestore.dart' as fs;
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:web_flutter/data/repository.dart';
import 'package:web_flutter/pages/auth/login.dart';
import 'package:web_flutter/pages/home/home_page.dart';
import 'package:web_flutter/services/authentication.dart';

Future<void> main() async {
  try {
    var app = fb.initializeApp(
        apiKey: 'someAPIkey',
        authDomain: 'some.domain.com',
        databaseURL: 'https://somedomain.firebaseio.com',
        projectId: 'myProj',
        storageBucket: '',
        messagingSenderId: 'someId',
        appId: '1:9anAppId');

    var searchClient = Algolia.init(
        applicationId: 'anAppId',
        apiKey: 'someAPIkey');

    // These two lines are new:
    var db = app.firestore();
    db.settings(fs.Settings(host: 'localhost:8080', ssl: false));

    runApp(MyApp(
        repository: Repository(db, searchClient),
        authentication: Authentication(app.auth())));
  } on fb.FirebaseJsNotLoadedException catch (e) {
    print(e);
  }
}
EN

回答 1

Stack Overflow用户

发布于 2020-07-14 09:51:38

关键是导入让我可以访问windowdart:html。从那里我可以做一些类似于在Firebase文档中使用的JavaScript的事情。

代码语言:javascript
复制
import 'dart:html';
import 'package:algolia/algolia.dart';
import 'package:firebase/firebase.dart' as fb;
import 'package:firebase/firestore.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:web_flutter/data/repository.dart';
import 'package:web_flutter/pages/auth/login.dart';
import 'package:web_flutter/pages/home/home_page.dart';
import 'package:web_flutter/services/authentication.dart';

Future<void> main() async {
  try {
    var app = fb.initializeApp(firebaseConfig);

    if (window.location.hostname == 'localhost') {
      app.firestore().settings(Settings(
            host: '0.0.0.0:8080',
            ssl: false,
          ));
    }

我不知道主机是否会在所有情况下都是0.0.0.0。这是我在模拟器启动时从列出的主机上得到的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62162480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档