我正在尝试在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表示“不要从另一个程序包导入实施文件”。
请问是否可以安全进行?或者还有另一种方式来实现自定义小部件?还是应该转移自定义步进文件的位置?谢谢。
答案 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(...);