【问题标题】:SharedPreference giving "Unable to establish connection on channel." when used inside flutter_background_serviceSharedPreference 在flutter_background_service 中使用时给出“无法在通道上建立连接。”
【发布时间】:2022-08-12 23:34:11
【问题描述】:

我正在使用flutter_background_service 启动服务以从云端获取数据。 它在 Android 中运行良好。但是当我在 iOS 模拟器上运行时,我得到了上面提到的错误。

void syncData() async {

  WidgetsFlutterBinding.ensureInitialized();
  Fimber.plantTree(DebugTree());
  Fimber.d(\"SyncData() called\");
  final service = FlutterBackgroundService();
  Fimber.d(\"Sync Service Started: $service\");
  ApiRepo apiRepo = ApiRepo();

  bool isPatientUploaded = false;
  Fimber.d(\"isPatientUploaded: $isPatientUploaded\");

  if(Platform.isAndroid) {
    SharedPreferencesAndroid.registerWith();
    PathProviderAndroid.registerWith();
    FlutterBackgroundServiceAndroid.registerWith();
  } else if (Platform.isIOS) {
    SharedPreferencesIOS.registerWith();
    PathProviderIOS.registerWith();
    FlutterBackgroundServiceIOS.registerWith();
  }
  Fimber.d(\"Fetching Shared Preference\");
  SharedPreferences prefs = await SharedPreferences.getInstance();
  Fimber.d(\"Fetched Shared Preference: $prefs\");
  String? authToken = prefs.getString(PrefKeys.TOKEN);

    ...........
}
 

我可以看到日志直到 \"Fetching Shared Preference\",然后得到一个错误。我没有看到下一个日志。

[VERBOSE-2:ui_dart_state.cc(209)] Unhandled Exception: PlatformException(channel-error, Unable to establish connection on channel., null, null)

这就是我开始服务的方式

startSync() async {
    Fimber.d(\"startSync() called\");
    final service = FlutterBackgroundService();
    Fimber.i(\"Configuring $service\");
    bool? isConfigured = await service.configure(
        iosConfiguration: IosConfiguration(
            onForeground: syncData, onBackground: syncData, autoStart: false),
        androidConfiguration: AndroidConfiguration(
          onStart: syncData,
          isForegroundMode: true,
          autoStart: false,
          foregroundServiceNotificationContent: \"Uploading Data to Cloud...\",
          foregroundServiceNotificationTitle: \"Selfi\",
        ));
    await DatabaseHelper().db;
    Fimber.i(\"isConfigured: $isConfigured\");
    if (isConfigured) {
      Fimber.d(\"Starting Service\");
      bool isStarted = await service.startService();
      Fimber.d(\"Service Started: $isStarted\");
    }
  }
  • 您是否尝试过简单地杀死您的应用程序并重新启动?看起来你可能只是初始化 SharedPreferences 而应用程序只是看不到它
  • 有什么解决方案吗?
  • @Vishak A Kamath 你解决了吗?
  • 同样的问题,你解决了吗?

标签: android ios flutter flutter-dependencies flutter-sharedpreference


【解决方案1】:

您可以停止并重新启动应用程序。有时 IDE 不会选择立即安装的包。 希望能帮助到你 :)

【讨论】:

    【解决方案2】:

    我在共享首选项中遇到了同样的问题,重建应用程序解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2022-07-23
      • 2022-08-22
      • 2022-08-13
      • 2022-07-12
      • 2022-07-07
      • 1970-01-01
      • 1970-01-01
      • 2023-01-18
      • 2011-10-06
      相关资源
      最近更新 更多