如何在颤振中使用扩展自定义小部件创建新小部件?



在颤振中,我有一个非常复杂的小部件,它工作正常。 但是对于应用程序的不同部分,我想稍微修改小部件,

为此,我必须使用不同的名称复制整个小部件并添加修改,

我们可以创建一个新的小部件,并在 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 中扩展小部件

最新更新