Flutter 中是否建议在 widget 上使用扩展? [已关闭]

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

在 Flutter 中向 widget 添加扩展会影响该 widget 转换为 RenderObject 时的成本吗?

例如,在下面的代码中,如果我在文本小部件上使用扩展,例如在第二种情况下。

这是否意味着我使用的每个文本小部件都会将填充功能添加到其成本中,即使对于在将它们转换为 RenderObject 时不需要填充的小部件(如情况 3)也是如此?

使用第一种情况不是更好吗?

extension PaddingOnText on Text {
  Widget paddingTextWid() => Padding(
        padding: const EdgeInsets.symmetric(horizontal: 20),
        child: this,
      );
}

class MyWidget extends StatelessWidget {
  const MyWidget({super.key});

  @override
  Widget build(BuildContext context) {
    return Column(children: [
      //case 1:
      const Padding(
        padding: EdgeInsets.symmetric(horizontal: 20),
        child: Text('First Case : warp with padding directly'),
      ),
      // case 2:
      const Text('Second Case: Use Extensions').paddingTextWid(),
      //case 3:
      const Text('Third Case: without padding')
    ]);
  }
}
flutter dart layout widget rendering
1个回答
0
投票

是的,通过使用扩展程序,您与该扩展程序一起使用的每个

Text
小部件都将具有填充功能。

如果您有大量需要填充的

Text

 小部件并且您希望避免重复代码,那么使用扩展方法可能会很有帮助。但是,如果您只有几个需要填充的 
Text
 小部件,那么在必要时直接用 Padding 包装这些 
Text
 小部件可能会更清晰、更高效。

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