将相同的BoxDecoration值分配给小部件树中的所有容器

问题描述 投票:1回答:1

是否有可能将装饰(填充,边距等)字段设置为所有Container小部件的应用程序范围的默认值?

我知道我们可以创建BoxDecoration,EdgeInstets等的一个实例,将其存储在变量中,然后像这样在所有Container中仅分配该变量:

Container(
  margin: _margin,
  padding: _padding,
  decoration: _boxDecoration
)

但这不是我的意思。我的意思是即使不分配任何值。我试图像扩展容器class MyContainer extends Container { ... }并在构造函数中设置所需的默认值,但是它不起作用。

flutter flutter-layout
1个回答
0
投票

您不应该扩展Container。您应该扩展StatelessWidget。 Flutter与其说是继承,不如说是撰写。

您应该有这样的东西:

class MyContainer extends StatelessWidget{
  final EdgeInsets _globalPadding = EdgeInsets.all(4);
  final Widget child;

  MyContainer({Key key, this.child}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Container(
      padding: _globalPadding,
      child: child,
    );
  }
}

然后您可以使用MyContainer代替任何Container

© www.soinside.com 2019 - 2024. All rights reserved.