美文网首页Flutter开发Flutter
Flutter - 使用extension-methods

Flutter - 使用extension-methods

作者: 开心人开发世界 | 来源:发表于2019-12-04 14:31 被阅读0次

    我已经转为Flutter的专业Flutter开发人员,并且我很喜欢它,但我来自Android背景并且也很喜欢Kotlin语言,确实错过了Dart中Kotlin语言的某些功能。

    其中之一是“ extension methods”。

    随着Dart 2.6的到来,它具有实现类似于Kotlin一样的extension methods的功能。

    在本文中,我将解释如何在Flutter应用程序中使用“extension methods”。

    extension methods

    让我们看看什么是extension methods以及它们的作用。

    简而言之,如果我向您解释,那么“它将摆脱您一直在创建的许多静态方法中的Utility类的使用。”

    概括地说,“ extension methods是在原始对象编译后添加到对象的方法。”

    让我们看一下我们当前正在使用的实用工具类的示例代码。

    void main() {
      print(Util.firstLetterToUpperCase('someString'));
    }
    
    class Util {
      static String firstLetterToUpperCase(String someString) {
        if (someString != null)
          return someString[0].toUpperCase() + someString.substring(1);
        else
          return null;
      }
    }
    

    在上面的代码中,我将的第一个字母转换String为大写。

    让我们看看extension methods如何帮助我们摆脱这种静态方法。

    void main() {
      print('someString'.firstLetterToUpperCase());
    }
    
    extension StringExtension on String{
      get firstLetterToUpperCase {
        if (this != null)
          return this[0].toUpperCase() + this.substring(1);
        else
          return null;
      }
    }
    

    我们在这里所做的是,不是创建Util类,而是在类型上创建了一个extensionnamed ,然后用于获取当前实例。StringExtension``String``this

    您还可以为double/ 等任何类型创建扩展方法,int或者我应该说一个num

    但是Flutter呢? 是否可以为小部件创建“extension methods”?

    答案是肯定的...

    让我们看看如何...

    我们要创建一个Text窗口小部件的一些paddingmargin和背景color以及这样做,我们将使用一个Container小部件的父部件Text

    代码将如下所示:

        Container(
          padding: const EdgeInsets.all(16),
          margin: const EdgeInsets.all(16),
          color: Colors.yellow,
          child: Text('Extended Text'),
        )
    

    现在,让我们尝试Text使用extension methods来创建它。

    为此,我们要创建一个extension名为ExtendedTextWidget类型和代码看起来像下面,也将努力同我们正常的代码。

    Text('Extended Text').addContainer();
    
    extension ExtendedText on Widget {
      addContainer(){
        return Container(
          padding: const EdgeInsets.all(16),
          margin: const EdgeInsets.all(16),
          color: Colors.yellow,
          child: this,
        );
      }
    }
    

    现在,您可以仅用一行代码包装Text小部件,Container这将使您的代码更具可读性。

    注意:在Flutter for the Stable 通道中,extension methods仅作为实验提供,因此您需要在analysis_options.yaml文件中启用它。如果您没有此文件,请在Flutter应用的根目录中创建,然后添加以下代码,然后开始使用。

    analyzer:
      enable-experiment:
        - extension-methods
    

    另外,Dart可能会遇到一些问题,因为它无法启用或采用实验中的扩展方法,但它的工作原理devmasterFlutter 的魅力一样。

    就是这样,我们可以在另一篇文章中深入讨论“ extension methods”。

    祝您有个愉快而有趣的一天。

    翻译自:https://medium.com/flutter-community/using-extension-methods-in-flutter-612b8db532ae

    相关文章

      网友评论

        本文标题:Flutter - 使用extension-methods

        本文链接:https://www.haomeiwen.com/subject/fbqlgctx.html