Dart 有导入别名吗?

Posted

技术标签:

【中文标题】Dart 有导入别名吗?【英文标题】:Does Dart have import alias? 【发布时间】:2019-05-13 11:35:28 【问题描述】:

在将文件导入 dart 文件时,我发现自己编写了繁琐的代码,如下所示:

import '../../constants.dart';

我想知道是否有任何方法可以为特定文件夹创建别名,例如:

import '@shared/constants.dart';

谢谢, 哈维。

【问题讨论】:

这不是别名,但在 Flutter 中可以进行一次导入,其中包括一些不同的导入。也许它可以帮助缩短您的进口时间 【参考方案1】:

Dart 不允许您重命名导入的标识符,但它允许您指定导入前缀

import '../../constants.dart' as foo;

...

foo.ImportedClass foo = foo.ImportedClass();

它还允许过滤导入的标识符,如

import '../../constants.dart' show foo hide bar;

另见

https://www.dartlang.org/guides/language/language-tour#libraries-and-visibility What is the difference between "show" and "as" in an import statement?

桶文件也可以使导入更容易,例如

lib/widgets/widgets.dart

export 'widget1.dart';
export 'widget2.dart';
export 'widget3.dart';
export 'widget4.dart';

lib/pages/page1.dart

import '../widgets/widgets.dart';

Widget build(BuildContext context) => Widget1();

【讨论】:

这不是我们要求的 我明白了。不,没有这样的事情。您可以使用 package:my_package/... 导入,但通常不会更短。 正如@RémiRousselet 评论的那样,我会选择那个解决方案。干杯伙计们:D 我只想说声谢谢。在我学习 Dart / Flutter 大约 3 个月的时间里,我很容易从您对 STO 上的 Dart / Flutter 主题的回答中了解一些基本概念。【参考方案2】:

没有。 Dart 没有导入别名。

但是你有绝对的进口来弥补它:

import 'package:my_lib/shared/constants.dart

这将导入文件/lib/shared/constants.dart

【讨论】:

值得注意的是,my_lib 等于 pubspec.yaml 中项目的 name

以上是关于Dart 有导入别名吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Dart 中使用类型别名/类型定义(也是非函数)?

Flutter笔记三之Dart库文件的使用

为啥不支持将 PHP 函数导入当前命名空间

Java包导入别名[重复]

在 WebStorm 中使用 Webpack 别名导致 ESLint 错误导入别名

ArcGIS中的字段名称可以修改吗?