3

我有颤振应用程序,它为每个平台(移动、网络、窗口)使用不同的 webview 插件。
虽然我能够import基于web和平台mobile,但我无法为 Windows 导入。

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

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

4

2 回答 2

3

对于发现此问题的任何其他人,请注意,接受的答案不是对所提出问题的答案。所问问题的答案是你不能。没有办法使用条件导入来获得移动和桌面之间的不同行为;请参阅Dart 团队的此评论

于 2021-06-14T18:03:02.297 回答
1

由于 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...
于 2021-06-14T12:45:45.163 回答