在Dart中导入整个文件与只导入带show的类之间有什么区别?

时间:2019-09-10 08:47:55

标签: flutter dart

代替写作:

import 'package:flutter_platform_widgets/flutter_platform_widgets.dart';

它会导出十几个文件,我想写:

import 'package:flutter_platform_widgets/flutter_platform_widgets.dart'
    show
        PlatformAlertDialog,
        PlatformCircularProgressIndicator,
        PlatformDialogAction,
        PlatformText,
        showPlatformDialog;

因为我只使用这些组件。但是,这很麻烦(使我想起了Typescript的无尽输入),并且违反了Dart的简洁原则。

在VSCode中导入片段使用第一种解决方案,但是在性能方面是否有显着差异?有某种好的做法吗?我在official guidelines中找不到任何内容。

2 个答案:

答案 0 :(得分:4)

对性能没有影响。使用show的原因是为了减少从不同包中导入类时的混乱机会。

例如:

abc.dart有2个课程

class One {}

class Two {}

xyz.dart也有2个类:

class One {}

class Three {}

并且您正在将两个包都导入文件中

import 'abc.dart';
import 'xyz.dart';

说,您只想使用One中的类abc.dart,所以当您使用One时,它可能来自abc.dartxyz.dart。因此,为了防止One来自xyz.dart,您可以使用:

import `xyz.dart` show Three // which means only `Three` class can be used in your current file from xyz.dart package

答案 1 :(得分:2)

基本上,当您使用关键字show时,您的意思是我只想使用来自docs的dart文件中此程序包中的特定类:

  

仅导入库的一部分

     

如果只想使用一部分库,则可以有选择地导入该库。例如:

// Import only foo.
import 'package:lib1/lib1.dart' show foo;

// Import all names EXCEPT foo.
import 'package:lib2/lib2.dart' hide foo;

现在,如果您尝试使用此软件包中除foo以外的任何内容,则会出现错误,因为您指定只想使用foo