如何在 Flutter mobile、web 和 window 之间添加条件导入?

How to add conditional imports across Flutter mobile,web and window?

我有一个 flutter 应用程序,它为每个平台(移动、网络、window)使用不同的 webview 插件。
虽然我可以 import 基于 webmobile 的平台,但我无法为 windows.

导入

如果它不是移动或网络,我尝试添加其他条件,但它正在使用 mobile 插件。

  1. 这是我为网络和移动设备导入包的方式(工作)。
import 'package:eam_flutter/form/mobileui.dart'
    if (dart.library.html) 'package:eam_flutter/form/webui.dart'
    as multiPlatform;   
  1. 这是我为网络、移动和 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