Flutter 包 widgets.dart、material.dart 和 cupertino.dart 有什么区别,使用哪一个?

sce*_*eee 16 flutter

在使用 flutter 时,我经常遇到标准库中不同包公开的类型。

例如,FlutterError但同样适用于其他小部件。在编写它并在 VS Code 中使用 IntelliSense 解析要导入的包以使其FlutterError可用时,IntelliSense 在多个不同的包中为我提供 FlutterError:

在这种情况下,它可以从

  • package:flutter/widgets.dart
  • package:flutter/foundation.dart
  • package:flutter/material.dart
  • package:flutter/cupertino.dart
  • package:flutter/rendering.dart

我的理解是,material.dartcupertino.dart提供特定样式的小部件 - 但剩下的部分是什么,我应该导入哪个包,该包应该MaterialApp(..)独立于平台并且也可以在 iOS 上运行?

并且 - 如果它有所不同 - 应该使用哪一个,以便特定于平台的小部件在 Android 和 iOS 上自动用于本机功能,例如日期/时间选择器,以便日期选择器自动成为 Android 上的平台特定变体和平台特定变体在iOS上?

Rém*_*let 5

发生的情况是,该类定义在框架的下部(此处foundationFlutterError

然后框架的较高层使用export指令重新导出较低层的内容。

这样做主要是为了确保开发人员在通常需要它们时不必导入 5 种以上不同的东西。

例如material.dart看起来大致是这样的:

export 'package:flutter/widget.dart';

class RaisedButton { }
Run Code Online (Sandbox Code Playgroud)