gpt4 book ai didi

dart - 如何避免为 dart/flutter 中的每个文件编写导入?

转载 作者:IT老高 更新时间:2023-10-28 12:44:50 25 4
gpt4 key购买 nike

我正在制作一个 flutter 应用程序,并为我正在使用的每个自定义小部件创建了一个文件/类。然后,我将所有这些文件导入主屏幕,但我不喜欢它的外观。特别是因为如果我想添加另一个小部件或删除我需要摆弄导入的小部件。

是否有类似 C# 命名空间的东西,我可以只导入文件夹/命名空间中的所有文件?

我已经成功尝试使用库/部件,但后来在 https://www.dartlang.org/guides/libraries/create-library-packages说我应该避免使用部分/部分。那么,我们是否应该导入每个文件?

而不是:

import 'package:custom_widgets/custom_multiplechoice.dart';
import 'package:custom_widgets/custom_singlechoice.dart';
import 'package:custom_widgets/custom_time.dart';
import 'package:custom_widgets/custom_yesnochoice.dart';
import 'package:custom_widgets/custom_date.dart';

我想要:

import 'package:custom_widgets';

最佳答案

是的,你可以使用 export 来实现你想要的。

您可以将所有小部件放在一个文件夹中,例如 libs/src/,然后在 libs/ 中创建文件 custom_widgets.dart并在 custom_widgets.dart 中像这样使用 export:

export 'src/custom_multiplechoice.dart';
export 'src/custom_singlechoice.dart';
export 'src/custom_time.dart';
export 'src/custom_widgets/src/custom_yesnochoice.dart';
export 'src/custom_date.dart';

一旦您import custom_widgets.dart,所有这些小部件都将可供您使用。

看看这个,这里都解释了:Dart: Organizing a library package

更新:

在 Dart 中没有像大多数其他语言那样的 namespaces。Dart 使用 libraries 进行封装、数据隐藏。将类导入代码的唯一方法是在文件开头使用 import,该文件也应该是一个库。

我也有这个问题。想象一下您想要动态导入库的情况。假设您想在您的应用程序中实现 MVC 模式,如果您在服务器上执行此操作,您将有一个 Router 类 来分析 URL 并决定什么 Controller 类 实例化以及从该Controller 调用什么Method。现在每个 URL 都会触发不同的 Controller ,而您事先并不知道,这取决于您的路由器来检测要实例化的类。在这种情况下,您需要做的是导入每个可以在文件开头实例化的 Controller 。我对此有疑问。如果您的应用程序变得很大并且您必须导入 20 个 Controller 类,这样路由器/调度程序可以调用其中一个,实际上您将只调用一个 Controller ,因为每个 URL 只有一个 Controller 。

如果要使用库,手动加载库没有问题,但对于上述情况,Dart 失败,因为没有像 PHP 那样的类的“自动加载”,您可以在其中使用使用命名空间的自动加载器来找出类的位置,并在代码中间动态地实例化一个类。

关于dart - 如何避免为 dart/flutter 中的每个文件编写导入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55579092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com