我想在另一个文件夹中的自己文件中制作几个复杂的小部件,这些文件将通过帮助程序脚本导入和配置。这是文件树:
-lib /
-constants.dart
-file1.dart
-file2.dart
-main.dart
-utils.dart
-实用程序/
-complex_widget1.dart
-complex_widget2.dart
-complex_widget3.dart
这是里面的东西 utils.dart
import "utils/complex_widget1.dart";
import "utils/complex_widget2.dart";
import "utils/complex_widget3.dart";
class Utils {
final Widget1 widget1;
final Widget2 widget2;
final Widget3 widget3;
final String data_needed_by_widgets;
Utils (this.data_needed_by_widgets) :
widget1 = Widget1(data_needed_by_widgets),
widget2 = Widget2(data_needed_by_widgets),
widget3 = Widget3(data_needed_by_widgets);
}
Run Code Online (Sandbox Code Playgroud)
这应该工作正常。但是问题出在我想访问constants.dart我的小部件时(它包含一堆const字符串和我在所有文件中使用的其他东西):
utils/complex_widget1.dart:
// Pretend this has actually complicated stuff
import "constants.dart"; // How do I import this?
class Widget1 extends StatelessWidget {
@override
Widget build (BuildContext context) => Center (
child: Text (TITLE_TEXT) // From constants.dart
);
}
Run Code Online (Sandbox Code Playgroud)
我不能只是从中导入各个变量constants.dart,它们都是全局变量,没有作为参数传递的类或函数。我如何constants.dart从Widget1(或其他任何方式)访问值complex_widget?
您可以使用相对路径
import '../../constants.dart';
Run Code Online (Sandbox Code Playgroud)
但是您应该使用包路径,因此移动文件不需要编辑导入。
import 'package:YOUR_PACKAGE/constants.dart';
Run Code Online (Sandbox Code Playgroud)
请注意,lib/目录在package路径中被省略。