Flutter 为小部件树中的所有容器指定相同的BoxDecoration值

Flutter 为小部件树中的所有容器指定相同的BoxDecoration值,flutter,flutter-layout,Flutter,Flutter Layout,是否可以将所有容器小部件的装饰(填充、边距等)字段设置为应用程序范围的默认值 我知道我们可以创建一个BoxEdition、EdgeInsets等的实例,存储在一个变量中,并在所有容器中仅分配该变量,如下所示: Container( margin: _margin, padding: _padding, decoration: _boxDecoration ) class MyContainer extends StatelessWidget{ final EdgeInsets

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

我知道我们可以创建一个BoxEdition、EdgeInsets等的实例,存储在一个变量中,并在所有容器中仅分配该变量,如下所示:

Container(
  margin: _margin,
  padding: _padding,
  decoration: _boxDecoration
)
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(
  margin: _margin,
  padding: _padding,
  decoration: _boxDecoration
)
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(
  margin: _margin,
  padding: _padding,
  decoration: _boxDecoration
)
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
代替任何
容器