例如,我有一个文件(first.dart),它有一个这样的代码:
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
Text('one'),
Text('two'),
Text('three'),
],
),
);
}
我有另一个文件(second.dart),它与第一个文件有类似的代码,但代码略有不同,如下所示:
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
Text('one'),
Text('two'),
Text('four'),
],
),
);
}
我不想有一个相同的代码使用两个地方,也许在未来有一个变化需要有我不想去两个文件,并改变他们都不是在一个地方改变,都得到改变,有什么想法,请?
2条答案
按热度按时间t3irkdon1#
构建Widget的“Flutter-Way”是通过实现子Widget并将不同的部分作为 prop 传递给它们。
在你的例子中,你可以将children数组作为List属性传递到一个包含scaffold和column的wrapper Widget中。作为替代,你可以直接将文本作为List属性传递,然后将数组Map到你的Text-Widgets,如果它们总是具有相同的布局,只是文本不同。
最后,如何详细地构建Widget树取决于您。始终尝试最小化复杂性并仅传递必要的 prop 。只要开始尝试,您仍然可以在以后对您的需求有更广泛的需求时优化代码。
如果我还不确定最终的结构,我通常会先将所有内容放入一个小部件中,然后在事情开始重复时将内容外包给Sub-Widget。
您还可以查找Flutter最佳实践,以进一步深入结构化代码的主题。
mutmk8jj2#
所以,是的,这是一个大问题。如果你不知道如何为每个屏幕定制中心文件,那么你必须编写重复的代码。
在这里,我将解释
buttonWidget
示例。这里你怎么能叫这个
或