zoukankan      html  css  js  c++  java
  • Flutter——Dart Extension扩展方法的使用

    dart的extension方法可以给已经存在的类添加新的函数,通过extension我们可以封装一些常用方法,提高开发效率。

    例一:扩展String

    给string添加一个log打印方法

    extension StringExt on String {
       void log() {
        print('--------$this');
      }
    }

    使用

    "there is something need to print".log();

     

    例二:扩展Widget

    iconfont中的图标有偏下的问题,添加一个iconCenter方法,使icon居中

    extension WidgetExt on Widget {
      Widget iconCenter(double size) {
        return Baseline(
          baselineType: TextBaseline.ideographic,
          baseline: size * 0.84,
          child: this,
        );
      }
    }

    使用

    Icon(KIconData.trash, size: 16.w, color: Colors.black).iconCenter(16.w),

     

    例三:扩展number

    例子同上一篇写的处理时间戳的例子(https://www.cnblogs.com/MaiJiangDou/p/14060017.html

    extension TimeExt on num {
      String get publishTime {
        var now = new DateTime.now();
        var longTime = this.toString().length < 13 ? this * 1000 : this;
        var time = new DateTime.fromMillisecondsSinceEpoch(longTime);
        var difference = now.difference(time);
        int days = difference.inDays;
        int hours = difference.inHours;
        int minutes = difference.inMinutes;
        String result = '';
        if (days > 3) {
          bool isNowYear = now.year == time.year;
          var pattern = isNowYear ? 'MM-dd' : 'yyyy-MM-dd';
          result = new DateFormat(pattern).format(time);
        } else if (days > 0) {
          result = '$days天前';
        } else if (hours > 0) {
          result = '$hours小时前';
        } else if (minutes > 0) {
          result = '$minutes分钟前';
        } else {
          result = '刚刚';
        }
        return result;
      }
    }

    使用,轻松获取发布时间

    1607260860000.publishTime();

    END------------------

    绿蚁新醅酒,红泥小火炉。 

    晚来天欲雪,能饮一杯无

  • 相关阅读:
    MySQL锁总结
    DDL和DML
    字节、字、位、比特之间的关系
    Mysql数据库、表设计规范指南
    Mysql性能优化关键配置指南
    3.python正则匹配不到内容时消耗大量内存
    1. postman使用
    2. python提示:TypeError: unhashable type: 'list'
    14. selenium的Page Object模型
    12.unittest的学习
  • 原文地址:https://www.cnblogs.com/MaiJiangDou/p/14094990.html
Copyright © 2011-2022 走看看