Flutter web app跨平台 Error: Not found: ‘dart:html‘

Error: Not found: ‘dart:html’

  • 编译代码时,不知道 dart sdk的代码是否会被调用。
  • 手机、浏览器运行时的 flutter sdk 含有的库不同
    • 手机 flutter sdk中没有 dart:html 或 js 这种library。 所以手机代码运行到这个 import dart:html; 就会报错 ```Error: Not found: ‘dart:html’``
    • web的sdk没有 dart.library.io库
    • 具体库看下文介绍

解决办法

  • import包的时候区分下平台,是手机还是浏览器。
  • 怎么区分呢?

1. 查询是否包含 平台特定的包

写sdk的export导出类,用sdk的import,一个道理哈。

export 'src/web.dart' if (dart.library.io) 'src/model.dart';
  • 如果有 dart.library.io 就导入 model.dart, 如果没有该库 用默认文件web.dart
  • 非浏览器的平台(手机、服务器、命令行)sdk才有这个库

2. 根据 逻辑表达式 返回 true、false做区分

code

import "a.dart" if (condition) "b.dart";
// 执行命令时,赋值
dart -Dcondition=true myapp.dart
  • 如果condition为true 那就导入 b.dart 文件,如果为false则导入默认的a.dart
  • 类似C语言通过 编译器间的设置的变量判断的

Flutter不同平台的库

  • 官方文档
  • dart.library.io
    /// - Servers
    /// - Command-line scripts
    /// - Flutter mobile apps
    /// - Flutter desktop apps

Flutter web app跨平台 Error: Not found: ‘dart:html‘_第1张图片

你可能感兴趣的:(Flutter,flutterweb,flutter,跨平台,编译失败)