flutter 总结部分自己碰到的常用方法

 1.隐藏软键盘

  /*隐藏软键盘*/
  static void hideSoftKeyBoard(BuildContext context) {
    FocusScope.of(context).requestFocus(FocusNode());
  }

2.计时器间隔1s时间执行

  /*
  * 每次间隔一秒
  * 参数time:持续多少秒
  * */
  static void showTimerOS(Function function,int time) {
     Timer.periodic(const Duration(seconds: 1), (timer) {
      if(timer.tick >=time){
        function();
        timer.cancel();
      }
      // timer.cancel();
    });

  }

3.MD5,导包来源于插件flustars

 String MD5(String data){
    return EncryptUtil.encodeMd5(data);
  }

4.获取屏幕宽高:

MediaQuery.of(context!).size.width
MediaQuery.of(context!).size.height

5.千分位分隔符

  //千分号分隔符
  static String FormatNumber(String count) {
    if (count == null || count.isEmpty) {
      return '0';
    }
    var format = NumberFormat('#,###,###,###.##');
    try{
      return format.format(json.decode(num.parse(count).toString()));
    }catch(e){
      return count;
    }

  }

6.月份两位补足

 /*将月份补足两位*/
  static String dealNumTwo(int i) {
    var format = new NumberFormat("00");

    return format.format(i);
  }

7.版本信息获取,引入的包package_info_plus

class PackInfroUtils {
  static PackageInfo? packageInfo;

  static Future init() async {
    await PackageInfo.fromPlatform().then(
      (value) => packageInfo = value,
    );
  }

  /*获取版本名*/
  static Future<String> getVersionName() async {
    String version = '';
    await PackageInfo.fromPlatform().then((value) => {
          version = value.version,
        });
    return version;
  }

  /**/
  static Future<String> getBuildName() async {
    if (packageInfo != null) {
      return packageInfo!.buildNumber;
    }
    String buildname = '';
    await PackageInfo.fromPlatform().then(
      (value) => buildname = value.buildNumber,
    );
    return buildname;
  }
  /**/
  static Future<String> getVersion() async {
    if (packageInfo != null) {
      return packageInfo!.version;
    }
    String buildname = '';
    await PackageInfo.fromPlatform().then(
      (value) => buildname = value.version,
    );
    return buildname;
  }
}

8.手机和密码校验

  /*将手机中间四位赋为星号*/
  static String getphoneStar(String phone) {
    if (phone.length >= 11) {
      return phone.replaceFirst(RegExp(r'\d{4}'), '****', 3);
    } else {
      return phone;
    }
  }



  //验证是否包含数字,字母,特殊字符中至少两种
  static bool checkPassword(String password) {
    if (password.isEmpty) {
      return false;
    }
    final reg = RegExp(
        r"^(?![\d]+$)(?![a-zA-Z]+$)(?![~!@#$%^&*()_+`\-={};:''”“<>?,/. ]+$).+$");
    return reg.hasMatch(password);
  }




  //同时包含数字,字母,特殊字符三种
  static bool checkPassword2(String password) {
    if (password.isEmpty) {
      return false;
    }
    final regex = RegExp(
        r"^(?=.*[a-zA-Z])(?=.*[\d])(?=.*[~!@#$%^&*()_+`\-={};:''”“<>?,/. ]).+$");
    // final rre = RegExp(r'^.+$');

    return regex.hasMatch(password);
  }



  //只有数字
  static bool checkNumOnly(String aNumber) {
    RegExp regex = new RegExp(r'^[0-9]+$');
    if (regex.hasMatch(aNumber)) {
      //匹配成功
      return true;
    }
    return false;
  }



  //只有大写字母
  static bool checkCapLetterOnly(String aNumber) {
    RegExp regex = new RegExp(r'^[A-Z]+$');
    if (regex.hasMatch(aNumber)) {
      //匹配成功
      return true;
    }
    return false;
  }

9.中英文一起时提前自动换行的问题

//解决中文和英文提前自动换行问题
extension FixAutoLines on String {
  String fixAutoLines() {
    return Characters(this).join('\u{200B}');
  }
}

10.吐司

class ToastUtils {
  static void toast(String message) {
    Fluttertoast.showToast(
        msg: message,
        gravity: ToastGravity.CENTER,
        textColor: R.color.WHITE,
        fontSize: 16,

        toastLength: Toast.LENGTH_SHORT);
  }
}

11.获取前面7天的日期

  //获取前面7天的日期
  static List getDateSeven() {
    List recentDateList = []; //最近14天日期
    var now = DateTime.now(); //当前时间的具体时间
    for (int i = 0; i < 7; i++) {
      String dateTime = now.add(new Duration(days: -i)).toString(); //过去7天的具体时间
      String day = dateTime.substring(0, 10); //日期
      recentDateList.add(day);
    }
    return recentDateList;
  }

12.获取当前月份的总天数

    int days = DateTime(DateTime.now().year, DateTime.now().month + 1, 0).day;

13.设置圆形头像,无头像则取名字首字母,这里未判断name空或null

/*圆形头像*/
  static Widget smallHead_Small(String url, String name) {
    return Container(
      decoration: BoxDecoration(
          border: Border.all(color: R.color.color_f1f4f9, width: 1),
          borderRadius: BorderRadius.circular(42)),
      child: ClipOval(
        child: TextUtil.isEmpty(url)
            ? Container(
                alignment: Alignment.center,
                color: R.color.THEME,
                width: 32,
                height: 32,
                child: Text(
                  name[0],
                  textAlign: TextAlign.center,
                  style: R.textStyle.font_white_16,
                ),
              )
            : Image.network(
                url,
                width: 32,
                height: 32,
                fit: BoxFit.fill,
                errorBuilder: (context, error, stackTrace) {
                  return Container(
                    alignment: Alignment.center,
                    color: R.color.THEME,
                    width: 32,
                    height: 32,
                    child: Text(
                      TextHeader.getFirstText(name),
                      style: R.textStyle.font_white_16,
                    ),
                  );
                },
              ),
      ),
    );
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值