繁体   English   中英

禁用 flutter web 应用程序的 crashlytics 并启用 flutter 移动应用程序

[英]Disable crashlytics for flutter web app and enable for flutter mobile app

I wanted to disable crashlytics for web and keep it enabled in android and iOS on my flutter app since firebase crashlytics is not supported by web. 谁能告诉我我应该怎么做。 没有Platform.isWeb所以这就是我感到困惑的原因。 请帮帮我,让我知道。 这里是我的main.dart代码供参考。

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
      // Initialize FlutterFire
      future: Firebase.initializeApp(),
      builder: (context, snapshot) {
        // Firebase Crashlytics
        FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;

        // Check for errors
        if (snapshot.hasError) {
          return SomethingWentWrong();
        }

        // Show Application
        if (snapshot.connectionState == ConnectionState.done) {
          return StreamProvider<User>.value(
            initialData: null,
            value: AuthService().user,
            child: MaterialApp(
              debugShowCheckedModeBanner: false,
              home: Wrapper(),
            ),
          );
        }

        // Initialization
        return PouringHourGlassPageLoad();
      },
    );
  }
}

如果你导入

导入'包:flutter/foundation.dart';

有一个名为kIsWeb的常量可用,您可以使用它来基于平台初始化 crashlytics。

就像是

if(!kIsWeb) {
  initializeFlutterFire();
}

kIsWeb是常量,它添加在基础库中,它告诉应用程序是否在 web 上运行。

import 'package:flutter/foundation.dart';

FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(!kIsWeb);

以下代码片段是我如何让 FirebaseCrashlytics 在 iOS 和 Android 上进行初始化,而不是在 Web 上进行初始化。

void main() async {
  await runZonedGuarded(() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp();
    
    // If not web, setup Crashlytics
    if (!kIsWeb) {
      FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;
    }
    
    runApp(const MyApp());
    
  }, (error, stackTrace) {
    // If not web, record the errors
    if (!kIsWeb) {
      FirebaseCrashlytics.instance.recordError(error, stackTrace, fatal: true);
    }
  });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM