小编Tal*_*leb的帖子

Flutter- FCM 由于没有注册 onBackgroundMessage 处理程序,因此无法在 Dart 中处理后台消息

我想在 Flutter 中处理 FCM 的后台消息,但是当 fcm 在后台模式下向应用程序发送消息并在日志中出错时出现错误

pubspec.yaml:

firebase_core: ^0.7.0
firebase_messaging: ^8.0.0-dev.14

Run Code Online (Sandbox Code Playgroud)

主活动.kt :

package com.mydomain.myproject

import io.flutter.embedding.android.FlutterActivity

class MainActivity: FlutterActivity() {
}
Run Code Online (Sandbox Code Playgroud)

应用程序.kt :

package com.mydomain.myproject

import com.dexterous.flutterlocalnotifications.FlutterLocalNotificationsPlugin
import io.flutter.app.FlutterApplication
import io.flutter.plugin.common.PluginRegistry
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback
import io.flutter.plugins.firebase.messaging.FlutterFirebaseMessagingBackgroundExecutor
import io.flutter.plugins.firebase.messaging.FlutterFirebaseMessagingBackgroundService
import io.flutter.plugins.firebase.messaging.FlutterFirebaseMessagingPlugin
import io.flutter.plugins.pathprovider.PathProviderPlugin


class MyApplication : FlutterApplication(), PluginRegistrantCallback {

    override
    fun onCreate() {
        super.onCreate()
        FlutterFirebaseMessagingBackgroundService.setPluginRegistrant(this)
        FlutterFirebaseMessagingBackgroundExecutor.setPluginRegistrant(this)
    }

    override
    fun registerWith(registry: PluginRegistry) {
        PathProviderPlugin.registerWith(registry.registrarFor("io.flutter.plugins.pathprovider.PathProviderPlugin"))
        FlutterLocalNotificationsPlugin.registerWith(registry.registrarFor("com.dexterous.flutterlocalnotifications.FlutterLocalNotificationsPlugin"))
        FlutterFirebaseMessagingPlugin.registerWith(registry.registrarFor("plugins.flutter.io/firebase_messaging"))
    }
}
Run Code Online (Sandbox Code Playgroud)

使用fcm的代码: 我只是在主应用程序类的initState()中调用了_initFcm()。我的目标是当应用程序在后台时,后台 fcm 方法必须触发,我必须在首选项中保存消息数据,以便在应用程序打开时做一些事情

void _initFcm() {
    Firebase.initializeApp();
    FirebaseMessaging.onMessageOpenedApp.listen((message) {
      Logger.log("_messaging onMessageOpenedApp: ${message}"); …
Run Code Online (Sandbox Code Playgroud)

firebase flutter firebase-cloud-messaging flutter-method-channel

18
推荐指数
2
解决办法
7257
查看次数

如何在 BLOC、Cubit 和存储库中使用 flutter 国际化来翻译消息?

我正在 Flutter 中开发一个多语言应用程序。

我使用flutter_localizations包进行本地化,使用 intl包进行国际化。

以 Widgets 内的正常方式,我可以在Context的帮助下使用它。

但问题是当我想在存储库或除 UI 层之外的其他层中使用国际化时。

除了 UI(我们无法访问Context)之外的其他层中进行国际化的最佳实践是什么,例如在 Api、Repository、Bloc 或 Cubit 中使用国际化?

注意:我正在寻找一种在应用程序的 BLOC(业务逻辑)内部使用国际化的方法,而不是 UI!

localization internationalization flutter bloc cubit

13
推荐指数
1
解决办法
2798
查看次数

如何使用 charts_flutter 库创建自定义 LegendContentBuilder 以根据选择显示和隐藏系列?

我使用charts_flutter创建BarChart,目前我想自定义它以构建如下图所示的 barChart:

在这里,我想做以下选项:

  1. 当我点击我在CustomLegend 中创建的图例时显示/隐藏系列(我在我的代码中用类名创建 -> CustomLegendBuilder
  2. 将自定义颜色设置为secondaryMeasureAxisprimaryMeasureAxis 的文本(我有左右两个轴)
  3. 点击该列时显示列的值(如气泡消息以显示该列的最大数据值)
  4. 当我隐藏系列之一时不要扩展列的宽度(我想为列设置特定的宽度)

请看我的代码:

pubspec.yaml :

dev_dependencies:
  flutter_test:
    sdk: flutter
  charts_flutter: ^0.9.0
Run Code Online (Sandbox Code Playgroud)

series_legend_options.dart :

import 'dart:math';

import 'package:charts_common/src/chart/common/behavior/legend/legend.dart';
import 'package:flutter/material.dart';
import 'package:charts_flutter/flutter.dart' as charts;

const Color blueColor = Color(0xff1565C0);
const Color orangeColor = Color(0xffFFA000);

class LegendOptions extends StatelessWidget {
  final List<charts.Series> seriesList;
  static const secondaryMeasureAxisId = 'secondaryMeasureAxisId';
  final bool animate;

  LegendOptions(this.seriesList, {this.animate});

  factory LegendOptions.withSampleData() {
    return LegendOptions(
      _createSampleData(),
      // Disable animations …
Run Code Online (Sandbox Code Playgroud)

charts legend flutter dynamic-chart-series google-barchart

9
推荐指数
1
解决办法
1658
查看次数

“MissingPluginException(在频道 com.tekartik.sqflite 上找不到方法 getDatabasesPath 的实现)”当我使用楼层数据库时

我正在尝试使用floor数据库,但是当我想构建数据库时,出现以下错误

E/flutter (26007): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: MissingPluginException(No implementation found for method getDatabasesPath on channel com.tekartik.sqflite)
E/flutter (26007): #0      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:154:7)
E/flutter (26007): <asynchronous suspension>
E/flutter (26007): #1      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:329:12)
E/flutter (26007): #2      invokeMethod (package:sqflite/src/sqflite_impl.dart:17:13)
E/flutter (26007): #3      SqfliteDatabaseFactoryImpl.invokeMethod (package:sqflite/src/factory_impl.dart:82:7)
E/flutter (26007): #4      SqfliteDatabaseFactoryMixin.safeInvokeMethod.<anonymous closure> (package:sqflite_common/src/factory_mixin.dart:25:35)
E/flutter (26007): #5      wrapDatabaseException (package:sqflite/src/exception_impl.dart:7:32)
E/flutter (26007): #6      SqfliteDatabaseFactoryImpl.wrapDatabaseException (package:sqflite/src/factory_impl.dart:78:7)
E/flutter (26007): #7      SqfliteDatabaseFactoryMixin.safeInvokeMethod (package:sqflite_common/src/factory_mixin.dart:25:7)
E/flutter (26007): #8      SqfliteDatabaseFactoryMixin.getDatabasesPath (package:sqflite_common/src/factory_mixin.dart:143:26)
E/flutter (26007): #9      getDatabasesPath (package:sqflite/sqflite.dart:168:54)
E/flutter (26007): #10     DatabaseFactoryExtension.getDatabasePath (package:floor/src/sqflite_database_factory.dart:23:23)
E/flutter …
Run Code Online (Sandbox Code Playgroud)

database floor flutter sqflite

6
推荐指数
6
解决办法
9077
查看次数

对 https://pub.dartlang.org 包存储库中的资源没有足够的权限

当我删除 flutter-sdk 并替换新的 flutter-sdk 时出现此错误

\n
Insufficient permissions to the resource in https://pub.dartlang.org package repository. You can modify credential using:\n    pub token add https://pub.dartlang.org\nRunning "flutter pub get" in flutter_tools...                           \npub get failed (65;     pub token add https://pub.dartlang.org)\n
Run Code Online (Sandbox Code Playgroud)\n

颤动版本

\n
Flutter 2.8.0 \xe2\x80\xa2 channel stable \xe2\x80\xa2 https://github.com/flutter/flutter.git\nFramework \xe2\x80\xa2 revision cf44000065 (6 days ago) \xe2\x80\xa2 2021-12-08 14:06:50 -0800\nEngine \xe2\x80\xa2 revision 40a99c5951\nTools \xe2\x80\xa2 Dart 2.15.0\n
Run Code Online (Sandbox Code Playgroud)\n

flutter

5
推荐指数
2
解决办法
2257
查看次数

如何更新Flutter PWA版本?

当我发布由 Flutter web 创建的 PWA 的新版本时,浏览器不会缓存,也不会显示 PWA 的新更新,而是读取旧的缓存。

versioning flutter progressive-web-apps

5
推荐指数
1
解决办法
1898
查看次数

如何模拟 url_launcher 包进行颤动测试?

我在我的 flutter 项目中使用了url_launcher: ^6.1.0 。我开始为我的小部件编写测试,但是使用url_launcher方法启动 URL 的小部件部分在运行测试时无法正常工作。

我在小部件中使用的方法之一如下所示:

 Future<void> _onTapLink(String? href) async {
    if (href == null) return;

    // canLaunchUrl method never return anything when we are calling this function inside flutter test
    if (await canLaunchUrl(Uri.parse(href))) {
      await launchUrl(Uri.parse(href));
    } else {
      print('cannot launch url: $href');
    }
  }
Run Code Online (Sandbox Code Playgroud)

当我们在 flutter 测试中调用此函数时,canLaunchUrl方法永远不会返回任何内容。

我正在寻找一种方法来模拟url_launcher包以使用内部颤动测试。

testing mocking mockito flutter url-launcher

4
推荐指数
1
解决办法
2104
查看次数