我的浮动代码未在网络上运行。
我发现“ bool kisweb”可用于检测平台。但是我的代码在“ FirebaseAuth.instance”处失败。这是否意味着我不能在Web上使用Firebaseauth,因为可能取决于dart:io?
在调试模式下在Chrome上启动lib \ main.dart ...调试服务 在ws://127.0.0.1:54007 / NghsYaNRLKE =上为Web编译compiled 小工具图书馆的例外情况 ╞═════════════════════════════════════════════════ ══════════ 在构建MultiProvider时引发了以下UnsupportedError: 不支持的操作:Platform._operatingSystem相关 引起错误的小部件是:MultiProvider org-dartlang-app:///packages/My_App/main.dart:30:10发生异常时 被抛出,这是堆栈: 软件包:build_web_compilers / src / dev_compiler / dart_sdk.js 3996:11
throw_包:build_web_compilers / src / dev_compiler / dart_sdk.js 57810:17 _operatingSystem 软件包:build_web_compilers / src / dev_compiler / dart_sdk.js 57859:27获取 操作系统 软件包:build_web_compilers / src / dev_compiler / dart_sdk.js 57772:27获取 _operatingSystem软件包:build_web_compilers / src / dev_compiler / dart_sdk.js 5020:17 get 软件包:build_web_compilers / src / dev_compiler / dart_sdk.js 57796:26获取 isIOS包:build_web_compilers / src / dev_compiler / dart_sdk.js 5020:17 获取包:firebase_core / src%5Cfirebase_app.dart 15:16
获取defaultAppName 软件包:build_web_compilers / src / dev_compiler / dart_sdk.js 5020:17 get 软件包:firebase_core / src%5Cfirebase_app.dart 51:57得到 实例包:build_web_compilers / src / dev_compiler / dart_sdk.js 5020:17获取包:firebase_auth / src%5Cfirebase_auth.dart 25:67
获取实例包:build_web_compilers / src / dev_compiler / dart_sdk.js 5020:17获取internalCallback ══════════════════════════════════════════════════ ══════════════════════════════════════════════════ 退出
请帮助我解决此问题。
答案 0 :(得分:11)
我重新打开此问题以提供更合适的答案,现在可在 Flutter 中使用原生版本:
import 'package:flutter/foundation.dart';
if ((defaultTargetPlatform == TargetPlatform.iOS) || (defaultTargetPlatform == TargetPlatform.android)) {
// Some android/ios specific code
}
else if ((defaultTargetPlatform == TargetPlatform.linux) || (defaultTargetPlatform == TargetPlatform.macOS) || (defaultTargetPlatform == TargetPlatform.windows)) {
// Some desktop specific code there
}
else {
// Some web specific code there
}
答案 1 :(得分:6)
您可以使用try-catch
块来防止异常破坏流程:
bool kisweb;
try{
if(Platform.isAndroid||Platform.isIOS) {
kisweb=false;
} else {
kisweb=true;
}
} catch(e){
kisweb=true;
}
答案 2 :(得分:3)
对我来说,转移到开发者渠道使用
flutter channel dev
大多数firebase插件现已提供网络支持。
答案 3 :(得分:2)
否,FlutterWeb上完全不支持FlutterFire插件组。它们依赖于特定于平台的API,目前仅适用于Android和iOS。
答案 4 :(得分:1)
我花了最后4个小时研究此问题。已经提到的所有内容都是正确的。但是,我很高兴也找到了适用于Web的解决方案:universal_io软件包。
请记住不要使用1.0.1版本,因为v1.0.1和其他版本无法正确检测到iOS。我只需要降级到0.2.0版本就可以解决它。在您阅读本文时,它可能已经修复,请在此处查看问题状态:https://github.com/dint-dev/universal_io/issues/8
import'package:universal_io / io.dart';
然后仅使用Platform.operatingSystem
例如
print('OS: ${Platform.operatingSystem}');