在扑朔迷离中,我有一个非常复杂的小部件,并且工作正常。 但对于应用程序的不同部分,我想稍作修改
要实现这一点,我必须使用不同的名称复制整个小部件并添加修改,
代替复制,我们是否可以继承继承窗口小部件并在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 {
}
我应该能够在其中修改父小部件的所有方面。
答案 0 :(得分:1)
假设您有一个容器,该容器会根据屏幕更改其大小,因此我们可以在方法参数中为其分配值,例如:
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.
);
答案 1 :(得分:0)
您不应该在Flutter中扩展小部件
答案 2 :(得分:0)
您可以将参数传递给 ChildWidget 构造函数方法,然后将值传递给 ParentWidget。 例如你可以修改父容器的高度:
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),
],
);
}
}