如何在 Flutter mobile、web 和 window 之间添加条件导入?
How to add conditional imports across Flutter mobile,web and window?
我有一个 flutter 应用程序,它为每个平台(移动、网络、window)使用不同的 webview 插件。
虽然我可以 import
基于 web
和 mobile
的平台,但我无法为 windows.
导入
如果它不是移动或网络,我尝试添加其他条件,但它正在使用 mobile
插件。
- 这是我为网络和移动设备导入包的方式(工作)。
import 'package:eam_flutter/form/mobileui.dart'
if (dart.library.html) 'package:eam_flutter/form/webui.dart'
as multiPlatform;
- 这是我为网络、移动和 windows 导入包的方式(不工作,它显示移动 webview 异常,因为它不支持桌面)。
import 'package:eam_flutter/form/windowui.dart'
if (dart.library.html) 'package:eam_flutter/form/webui.dart'
if (dart.library.io) 'package:eam_flutter/form/mobileui.dart'
as multiPlatform;
如何为 windows 指定条件导入?
因为 window 没有条件导入支持,因为它属于 dart io。
我有这个解决方法并发现它有效。
我最终使用不同的包导入为每个平台创建文件。
import 'package:flutter/foundation.dart' show kIsWeb;
import 'dart:io' as io;
if(kIsWeb){
{
return WebPage(); //your web page with web package import in it
}
else if (!kIsWeb && io.Platform.isWindows) {
return WindowsPage(); //your window page with window package import in it
}
else if(!kIsWeb && io.Platform.isAndroid) {
return AndroidPage(); //your android page with android package import in it
}
//you can add others condition...
对于发现此问题的任何其他人,请注意已接受的答案不是所问问题的答案。所问问题的答案是你不能。无法使用条件导入在移动设备和桌面设备之间获得不同的行为;参见 this comment from the Dart team。
我有一个 flutter 应用程序,它为每个平台(移动、网络、window)使用不同的 webview 插件。
虽然我可以 import
基于 web
和 mobile
的平台,但我无法为 windows.
如果它不是移动或网络,我尝试添加其他条件,但它正在使用 mobile
插件。
- 这是我为网络和移动设备导入包的方式(工作)。
import 'package:eam_flutter/form/mobileui.dart'
if (dart.library.html) 'package:eam_flutter/form/webui.dart'
as multiPlatform;
- 这是我为网络、移动和 windows 导入包的方式(不工作,它显示移动 webview 异常,因为它不支持桌面)。
import 'package:eam_flutter/form/windowui.dart'
if (dart.library.html) 'package:eam_flutter/form/webui.dart'
if (dart.library.io) 'package:eam_flutter/form/mobileui.dart'
as multiPlatform;
如何为 windows 指定条件导入?
因为 window 没有条件导入支持,因为它属于 dart io。
我有这个解决方法并发现它有效。
我最终使用不同的包导入为每个平台创建文件。
import 'package:flutter/foundation.dart' show kIsWeb;
import 'dart:io' as io;
if(kIsWeb){
{
return WebPage(); //your web page with web package import in it
}
else if (!kIsWeb && io.Platform.isWindows) {
return WindowsPage(); //your window page with window package import in it
}
else if(!kIsWeb && io.Platform.isAndroid) {
return AndroidPage(); //your android page with android package import in it
}
//you can add others condition...
对于发现此问题的任何其他人,请注意已接受的答案不是所问问题的答案。所问问题的答案是你不能。无法使用条件导入在移动设备和桌面设备之间获得不同的行为;参见 this comment from the Dart team。