База данных Flatter Firebase в реальном времени в сети - PullRequest
1 голос
/ 09 января 2020

Я пытаюсь заставить мое приложение флаттера работать в браузере, и это зависит от базы данных firebase_database. На самом деле нет никакой документации о том, как это сделать, но я делаю некоторые предположения, основанные на документации firebase_core и firebase_auth:

Мое приложение работает на iOS и android, но у меня возникли проблемы заставить базу данных работать в трепетной сети.

Я настроил свой индекс. html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Flutter WebRTC Demo</title>
</head>
<body>
    <script src="https://www.gstatic.com/firebasejs/7.6.1/firebase-app.js"></script>
    <script src="https://www.gstatic.com/firebasejs/7.6.1/firebase-database.js"></script>
    <script>
        const firebaseConfig = {
            apiKey: '...',
            authDomain: '...',
            databaseURL: '...',
            projectId: '...',
            storageBucket: '...',
            messagingSenderId: '...',
            appId: '...'
        };
        firebase.initializeApp(firebaseConfig);
    </script>
    <script src="main.dart.js" type="application/javascript"></script>
</body>
</html>

Но, когда я пытаюсь использовать базу данных Firebase, я получаю ошибки в журналы:

MissingPluginException(No implementation found for method DatabaseReference#set on channel plugins.flutter.io/firebase_database)
package:dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 196:49  throw_
package:flutter/src/services/platform_channel.dart 319:7                              invokeMethod
package:dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 47:50            onValue
package:dart-sdk/lib/async/zone.dart 1381:54                                          runUnary
package:dart-sdk/lib/async/future_impl.dart 139:18                                    handleValue
package:dart-sdk/lib/async/future_impl.dart 680:44                                    handleValueCallback
package:dart-sdk/lib/async/future_impl.dart 709:32                                    _propagateToListeners
package:dart-sdk/lib/async/future_impl.dart 524:5                                     [_completeWithValue]
package:dart-sdk/lib/async/future_impl.dart 554:7                                     callback
package:dart-sdk/lib/async/schedule_microtask.dart 43:11                              _microtaskLoop
package:dart-sdk/lib/async/schedule_microtask.dart 52:5                               _startMicrotaskLoop
package:dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 168:15           <fn>

Можно ли каким-то образом заставить работать базу данных в реальном времени в моем приложении для флаттера в Интернете?

Ответы [ 2 ]

5 голосов
/ 10 января 2020

В основной README в github flutterfire , есть "Web?" столбец, в котором указано, какие плагины готовы для веб-приложений.

В настоящее время в веб-приложениях с поддержкой флаттера поддерживаются только firebase_core, firebase_auth, cloud_firestore и firebase_functions. firebase_storage - следующий плагин в дорожной карте, но еще не поддерживаемый.

Как упомянул @Frank van Puffelen, чтобы использовать полную функциональность firebase в трепетной сети, используйте firebase-dart библиотека-оболочка.

Существует также Доска проекта веб-плагинов Flutter , которая показывает, какие плагины флаттера включены в план и на какой стадии разработки они находятся.

3 голосов
/ 10 января 2020

Плагины FlutterFire изначально создавались для работы в собственных мобильных приложениях для iOS и Android. Как мы говорим, в плагины добавляется поддержка веб-платформы, но пройдет некоторое время, прежде чем будут рассмотрены все продукты Firebase.

Вы можете проверить, какие модули в настоящее время совместимы с Flutter для веб-сайтов, в этом списке [Доступные плагины FlutterFire] (Доступные плагины FlutterFire) в репозитории Github.

Чтобы использовать Firebase в Flutter для веб-сайтов с другими функциями, используйте плагин firebase-dart . Это означает, что вам понадобится отдельный код для Интернета и для мобильных устройств, но вы можете выделить различия только в небольшой части вашего приложения.

...