我想禁用crashlytics for web,并在我的flutter应用程序的android和iOS中保持启用状态,因为web不支持firebase Crashlycs。有人能告诉我该怎么做吗?没有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();
},
);
}
}
如果导入
导入'package:flutter/foundation.dart';
有一个名为kIsWeb
的常量可用,您可以使用它来初始化基于平台的crashlytics。
类似的东西
if(!kIsWeb) {
initializeFlutterFire();
}
下面的代码片段是我如何在iOS&安卓系统,但不在网络上。
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);
}
});
}
kIsWeb
是常量,添加到foundationlib内部,用于告诉应用程序是否在web上运行。
import 'package:flutter/foundation.dart';
FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(!kIsWeb);