Flutter Mobile 和 Web 包鱼龙混杂

Flutter Mobile and Web packages cohabitation

我正在开始一个目标为 android/ios/web 的 flutter 项目,有没有办法为移动和 Web 平台编写相同的库代码?没有找到条件导入之类的解决方案。

在我的项目中,我创建了一个文件 'global_import.dart',其中包含针对网络和移动设备的所有导入细节,如下所示:

//mobile packages
/*
export 'package:flutter/material.dart';
*/

//web packages
///*
export 'package:flutter_web/material.dart';
//*/

我没有在小部件文件中立即导入 flutter 或 flutter_web 包,而是根据需要导入此文件和 comment/uncomment mobile/web 包。

我目前只找到这个解决方案,正在寻找更好的解决方案。

这是我找到的代码片段,可能会有用。

export 'package:flutter_stub/material.dart'
  // ignore: uri_does_not_exist
  if (dart.library.html) 'package:flutter_web/material.dart'
  // ignore: uri_does_not_exist
  if (dart.library.io) 'package:flutter/material.dart';

https://github.com/aloisdeniel/flutter_shared_ui_poc/blob/master/packages/flutter_cross/lib/material.dart

查看来自 Aloïs Deniel 的 this 存储库了解更多信息。

Flutter 版本 1.9 他们删除了

import 'package:flutter_web/material.dart'

现在可以直接使用包了

import 'package:flutter/material.dart';

https://www.youtube.com/watch?v=wzNd3yyLcaU

Flutter web 项目现在可以导入所有普通的flutter 导入,不再需要开发web 的特殊情况。