在颤振中,我有一个非常复杂的小部件,它工作正常。 但是对于应用程序的不同部分,我想稍微修改小部件,
为此,我必须使用不同的名称复制整个小部件并添加修改,
我们可以创建一个新的小部件,并在 Flutter 中继承小部件并覆盖小部件,而不是复制吗?
例如:- 考虑我有这个小部件:
class ParentWidget extends StatefulWidget {
@override
_ParentWidgetState createState() => _ParentWidgetState();
}
class _ParentWidgetState extends State<ParentWidget> {
@override
Widget build(BuildContext context) {
return Container(
);
}
}
我想创建子小部件,例如:-
class ChildWidget extends ParentWidget {
}
我应该能够修改父小部件的所有方面。
假设您有一个容器,它根据屏幕更改其大小,因此我们可以在方法参数中为它们分配值,例如:
1. 通用小部件类
class CommonWidget {
static Widget getContainer(double width, double height, Widget body) {
return Container(
width: width,
height: height,
child: body,
);
}
2. 用法
Widget body = Center(
child: Text('Welcome to Home Screen'),
);
return Scaffold(
appBar: AppBar(
title: Text('Home'),
),
body: CommonWidget.getContainer(100, 100, body), // These params you can change at your preference.
);
您可以将参数传递给 ChildWidget 构造函数方法,然后将值传递给 ParentWidget。 例如,您可以修改父容器的高度:
家长小部件:
class ParentWidget extends StatefulWidget {
double height;
ParentWidget ({this.height});
@override
State<StatefulWidget> createState() {
return _ParentWidgetState();
}
}
class _ParentWidgetState extends State<ParentWidget> {
@override
Widget build(BuildContext context) {
return Container(
height: widget.height == null ? 40 : widget.height,
);
}
}
子小部件:
class ChildWidget extends ParentWidget {
ChildWidget (double height) : super(height: height);
}
在 ui 中,您可以修改高度:
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
ParentWidget(),
ChildWidget(220),
],
);
}
}
你不应该在 Flutter 中扩展小部件