如何在 flutter 初始化 firebase 之前警告用户没有互联网连接

How to warn user about no internet connection before firebase initialization in flutter

我正在使用 firebase 进行推送 notification.To 这样做,我正在学习一个教程,他们说 Firebase.initializeApp(); 必须在 runApp(MyApp()); 之前声明。 推送通知场景工作正常,但问题是,如果没有互联网连接,应用程序会卡在启动画面中。 现在我想知道,是否有任何标准程序可以警告用户 runApp(MyApp()); 之前没有互联网连接?或者规则“Firebase.initializeApp(); 必须在 runApp(MyApp()); 之前声明”我知道是错误的? 或者我遗漏了一些标准程序?

我的代码场景-

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  try {
    await Firebase.initializeApp();
  } on SocketException {
    print('socket exception'); 

  }
  FirebaseMessaging.onBackgroundMessage(_firebaseMessegingBackgroundHandler);

  await FirebaseMessaging.instance.subscribeToTopic('all');
  // await FirebaseMessaging.instance.subscribeToTopic('fluttertest');

  // runApp(MyApp());

  await SentryFlutter.init(
    (options) {
      options.dsn =
          '',
      options.tracesSampleRate = 1.0;
    },
    appRunner: () => runApp(MyApp()),
  );
  SystemChrome.setSystemUIOverlayStyle(
    SystemUiOverlayStyle.dark.copyWith(
      systemNavigationBarColor: GlobalColor.primaryTitle,
      statusBarColor: GlobalColor.statusBarColor,
    ),
  );

  await flutterLocalNotificationsPlugin
      .resolvePlatformSpecificImplementation<
          AndroidFlutterLocalNotificationsPlugin>()
      .createNotificationChannel(channel);

  await FirebaseMessaging.instance.setForegroundNotificationPresentationOptions(
    alert: true,
    badge: true,
    sound: true,
  );
}

请注意,我知道如何检查连接状态,我的目标是如何使用 firebase 实现它!

我的猜测是对 await FirebaseMessaging.instance.subscribeToTopic('all') 的调用只有在有互联网连接时才会成功。

如果您希望在连接可用后完成订阅,但在此之前继续正常使用该应用程序:从该调用中删除 await

如果您希望在现在没有互联网连接的情况下甚至不再尝试订阅,请检测是否有互联网连接(以您已经知道的方式)并跳过 subscribeToTopic在没有互联网连接时调用。