Flutter - 创建一个自定义样式的容器小部件,其中 "projects" child 内容
Flutter - Create a custom styled Container widget which "projects" child content
我想创建一个始终具有渐变背景的自定义容器小部件。原因是只在一个地方编码渐变,所以它可以在一个地方改变,但会影响整个应用程序。
我认为是这样的:
child: Container(
height: double.infinity,
width: double.infinity,
padding: const EdgeInsets.all(40),
decoration: BoxDecoration(
gradient: LinearGradient(
begin: const Alignment(1, -1.0),
end: const Alignment(-0.3, 0.0),
colors: [
initialGradientColor,
Theme.of(context).colorScheme.primary
],
),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [...more code...
我可以像这样提取到容器小部件吗?:
class GradientContainerWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
child: // ****************** project content into here... ****************
height: double.infinity,
width: double.infinity,
padding: const EdgeInsets.all(40),
decoration: BoxDecoration(
gradient: LinearGradient(
begin: const Alignment(1, -1.0),
end: const Alignment(-0.3, 0.0),
colors: [initialGradientColor, Theme.of(context).colorScheme.primary],
),
),
);
}
}
我需要找到一种方法将 child 添加到 GradientContainerWidget 中。有没有办法将内容投影到小部件的 child 中?
视图中的用法是这样的:
child: GradientContainerWidget(
child: Column(mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [..... more children....])
);
如果您正在研究如何添加子项,那么您可以创建一个构造函数并将其作为 Widget 传递。
class GradientContainerWidget extends StatelessWidget {
final Widget child;
GradientContainerWidget({this.child}); //you can pass key to
@override
Widget build(BuildContext context) {
return Container(
child: child
height: double.infinity,
width: double.infinity,
padding: const EdgeInsets.all(40),
decoration: BoxDecoration(
gradient: LinearGradient(
begin: const Alignment(1, -1.0),
end: const Alignment(-0.3, 0.0),
colors: [initialGradientColor, Theme.of(context).colorScheme.primary],
),
),
);
}
}
我想创建一个始终具有渐变背景的自定义容器小部件。原因是只在一个地方编码渐变,所以它可以在一个地方改变,但会影响整个应用程序。
我认为是这样的:
child: Container(
height: double.infinity,
width: double.infinity,
padding: const EdgeInsets.all(40),
decoration: BoxDecoration(
gradient: LinearGradient(
begin: const Alignment(1, -1.0),
end: const Alignment(-0.3, 0.0),
colors: [
initialGradientColor,
Theme.of(context).colorScheme.primary
],
),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [...more code...
我可以像这样提取到容器小部件吗?:
class GradientContainerWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
child: // ****************** project content into here... ****************
height: double.infinity,
width: double.infinity,
padding: const EdgeInsets.all(40),
decoration: BoxDecoration(
gradient: LinearGradient(
begin: const Alignment(1, -1.0),
end: const Alignment(-0.3, 0.0),
colors: [initialGradientColor, Theme.of(context).colorScheme.primary],
),
),
);
}
}
我需要找到一种方法将 child 添加到 GradientContainerWidget 中。有没有办法将内容投影到小部件的 child 中?
视图中的用法是这样的:
child: GradientContainerWidget(
child: Column(mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [..... more children....])
);
如果您正在研究如何添加子项,那么您可以创建一个构造函数并将其作为 Widget 传递。
class GradientContainerWidget extends StatelessWidget {
final Widget child;
GradientContainerWidget({this.child}); //you can pass key to
@override
Widget build(BuildContext context) {
return Container(
child: child
height: double.infinity,
width: double.infinity,
padding: const EdgeInsets.all(40),
decoration: BoxDecoration(
gradient: LinearGradient(
begin: const Alignment(1, -1.0),
end: const Alignment(-0.3, 0.0),
colors: [initialGradientColor, Theme.of(context).colorScheme.primary],
),
),
);
}
}