如何在Flutter中制作自定义小部件/组件?

3

假设我想要一个样式为圆形且带有边框的容器。

我应该为容器创建一个主题吗?还是应该创建自定义小部件/组件?

我的主要关注点在于不重复一切,因此我正在考虑这两种可能性。

哪个更受推荐?

敬礼!


为什么人们对我的问题进行了负评。 我真的不知道 :(


例如使用DecoratedBox - pskink
@pskink DecoratedBox肯定可以,但我实际上担心的是每次使用Container时如何避免重复。 - stuckedoverflow
1个回答

6

您需要创建一个扩展Widget的小部件。

它可以是StatelessWidget

class MyWidget extends StatelessWidget {

  Widget build(BuildContext context) {
    //... return your container here
  }

或者 StatefulWidget
class MyWidget extends StatefulWidget {
  MyWidget(this.child);

  final Widget child;

  @override
  State<StatefulWidget> createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {

  @override
  Widget build(BuildContext context) {
    return Container(child: widget.child, ...)
    //... return your container here
  }

那么制作自定义小部件比将主题应用于容器更好吗?仍在寻找如何在容器中应用主题,以确定哪个更好。 - stuckedoverflow
我尝试了这个,但现在显示命名参数child未定义,而普通的Container会有child。 - stuckedoverflow
关于使用自定义小部件或其他内容,没有严格的规定。这只涉及到您代码的清晰度和可读性。我更喜欢使用自定义小部件 - 这对我来说更方便。至于“child”的问题,我不明白 - 它对于Container并非必填字段。 - Andrii Turkovskyi
嗨,安德烈,我已经更新了关于子属性问题的问题,希望你能帮忙。谢谢。 - stuckedoverflow
看起来你不理解Flutter开发的一些基本原则。MyWidget没有child字段,所以你在尝试什么?我已经更新了答案-添加了child。你强烈需要学习Flutter教程,以避免将来出现这样的问题。 - Andrii Turkovskyi
好的,谢谢。是的,我需要学习很多。我被迫在两个月内使用Flutter交付一款完整的电子商务应用程序,这对我来说是全新的。所以请原谅我。 - stuckedoverflow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接