错误:请勿从其他程序包导入实施文件

时间:2018-10-22 08:32:39

标签: dart flutter

我正在尝试在Flutter中定制步进器。我复制了stepper.dart的实现,将文件保存到自己的lib文件夹中,并修复了导入以消除错误。

import 'package:flutter/src/material/button_theme.dart';
import 'package:flutter/src/material/colors.dart';
import 'package:flutter/src/material/debug.dart';
import 'package:flutter/src/material/flat_button.dart';
import 'package:flutter/src/material/icons.dart';
import 'package:flutter/src/material/ink_well.dart';
import 'package:flutter/src/material/material.dart';
import 'package:flutter/src/material/material_localizations.dart';
import 'package:flutter/src/material/theme.dart';
import 'package:flutter/src/material/typography.dart';

错误已删除,但dart表示“不要从另一个程序包导入实施文件”。

请问是否可以安全进行?或者还有另一种方式来实现自定义小部件?还是应该转移自定义步进文件的位置?谢谢。

2 个答案:

答案 0 :(得分:2)

按照惯例,其他软件包中的

lib/src被认为是私有的。 分析器说明您不应导入此类文件。

无论如何,Flutter导出它认为在package:flutter/...下公开的所有内容。而是导入这些文件。

另请参阅https://www.dartlang.org/tools/pub/package-layout#implementation-files

答案 1 :(得分:2)

Flutter Material Widgets不打算被子类化。这是创建定制版本的Widget的工作:

(1)找到原始窗口小部件的源文件,并将其复制到项目的 lib 目录中。
(您已经做到了)

(2)从复制的文件中删除所有导入语句,并插入行
import 'package:flutter/material.dart';

(3)检查Dart Analysis中是否缺少软件包。要添加那些,请在复制的源文件中单击未知的(带下划线的红色)类名称,然后按 ALT + Ente r并选择提供添加缺少的依赖项的上下文菜单项。

(4)现在修改小部件以使您心满意足。

(5)以在项目中使用修改后的Widget,将其导入如下:
import 'stepper.dart' as my;

(6)现在,您可以通过以下方式访问修改后的步进器:
my.Stepper stepper = my.Stepper(...);