在Flutter中从父目录导入

11

我希望能够在另一个文件夹中创建一些复杂的小部件,并将其放入单独的文件中,以便通过助手脚本导入和配置。以下是文件树:

- lib/
  - constants.dart
  - file1.dart
  - file2.dart
  - main.dart
  - utils.dart
  - utils/
    - 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);
}

这应该可以正常工作。但是当我想在我的小部件中访问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
    );
}

我不能从constants.dart中导入单个变量,它们都是全局的,并且没有类或函数可作为参数传递。我该如何在Widget1(或其他任何complex_widget)中访问constants.dart的值?


1
import '../constants.dart'; - Richard Heap
1个回答

28

您可以使用相对路径

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

但你应该使用包路径,这样移动文件时就不需要编辑导入内容。

import 'package:YOUR_PACKAGE/constants.dart';

注意在package路径中省略了lib/目录。


非常感谢!我已经在谷歌上搜索了几个小时! - Levi Lesches
顺便提一下,第二个句点只有一个,不是两个。非常感谢! - Levi Lesches
我一直在寻找一种方法来导出我的测试包中的一些文件,但由于某种原因,我认为相对路径是“...”(三个点)而不是“..”(两个点)。谢谢! - atereshkov
1
如何导入文件? - raman raman
默认情况下,软件包是否已设置?我如何知道我的应用程序的软件包名称? - darksoulsong
1
没事了,我找到了:我的应用程序包名称就是应用程序的名称。 - darksoulsong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接