其他分享
首页 > 其他分享> > [Flutter] 枚举类enum与包拓展extension

[Flutter] 枚举类enum与包拓展extension

作者:互联网

枚举类Enum

简单描述应用场景:

通过接口异步获取数据时,发起请求后,一般有三种状态

等待:LOADING

成功:SUCCESS

错误:ERROR

enum getDataFromApi(
LOADING,//等待
SUCCESS,//成功
ERROR	//错误
)

这样就可以获取接口数据的代码解耦,你只需要通过对应的枚举变量来写对应的实现(枚举类本身不写实现,一般通过switch或者if语句来判断)。

enum Season{
  SPRING,//春天
  SUMMER,//夏天
  AUTUWN,//秋天
  WINTER //冬天
}

void main() {
  Season season = Season.SPRING;
  switch (season) {
    case Season.SPRING:
      print("春");
      break;
    case Season.SUMMER:
      print("夏");
      break;
    case Season.AUTUWN:
      print("秋");
      break;
    case Season.WINTER:
      print("冬");
      break;
  }
}

//output: 春

包拓展extension

extension的主要功能是给已经存在的类添加新的member function,往里面增加新的函数。可以对Iterable,String这样的常用类增加一些方法

对String添加拓展

extension StringToNumber on String {
  int toInt() {
    return int.parse(this);
  }
  // ···
}

使用

import 'string_to_number.dart';
// ···
print('18'.toInt()); 

//output: 18

枚举类和包拓展结合

通过包拓展,可以另外写一个类对枚举类进行实现,这样既不用动枚举类,也不用在逻辑页面写一大堆枚举类的实现。

void main() {
 //使用
 print(Season.SPRING.seasonName);
 //output: 春天
}

//枚举类
enum Season{
  SPRING,//春天
  SUMMER,//夏天
  AUTUWN,//秋天
  WINTER //冬天
}

//对枚举类的拓展
extension PrintSeason on Season{
    //枚举变量的实现方法
  String get seasonName{
    switch(this){
      case Season.SPRING:
        return '春天';
      case Season.SUMMER:
        return '夏天';
      case Season.AUTUWN:
        return '秋天';
      case Season.WINTER:
        return '冬天';
      default:
        return '无';
    }
  }
  
}

标签:case,return,extension,Season,enum,枚举,SPRING,print,Flutter
来源: https://www.cnblogs.com/TobuTobu/p/16190828.html