dart中枚举值的最佳用例是什么?[已关闭]

wi3ka0sx  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(120)

已关闭。此问题为opinion-based。目前不接受回答。
**要改进此问题吗?**更新此问题,以便editing this post可以使用事实和引文来回答。

昨天就关门了。
Improve this question
我想知道的主要用例与示例将是伟大的。

34gzjxbg

34gzjxbg1#

在哪里使用枚举->常见的例子假设你想在一个菜单中显示一个星期天的名称“MONDAY - SUNDAY”,这时你知道星期天的数据是恒定的,永远不会改变。
举例说明:

enum day {
  sunday,
  monday,
  tuesday,
  wednesday,
  thursday,
  friday,
  saturday,
}
    void main() { 

  // assume you app user will select from Menu Item day
   var selectedEnumDay = day.friday;
   
  // Switch-case
   switch(selectedEnumDay) {
    case day.sunday: print("You selected sunday");
    break;
    case day.monday: print("You selected monday");
    break;
    case day.tuesday: print("You selected tuesday");
    break;
    case day.wednesday: print("You selected wednesday");
    break;
    case day.thursday: print("You selected thursday");
    break;
    case day.friday: print("You selected friday");
    break;
    case day.saturday: print("You selected saturday");
    break;
  }
}

字符串

jmo0nnb3

jmo0nnb32#

枚举是一种特殊类型的类,它允许创建一组与特定类型关联的常量值。[ 1 ]

枚举非常适合表示离散状态集。[ 2 ]

使用enum的一个简单例子是:

enum RequestState {success, error, notAsked, loading }

...
RequestState apiState = RequestState.notAsked;

  Widget buildContaier() {
    switch(apiState){
       case apiState.loading:
           return CircularProgressIndicator();
       case apiState.success:
           return ListView();
       case apiState.error:
           return Text("error fetch api");
       default:
           return Container();
   }

字符串

uinbv5nw

uinbv5nw3#

枚举在Flutter中被低估了,因为它们有很多用例,但我没有看到很多人谈论它。
以下是其中的一些:

  • 定义用户角色:
enum UserRole{
  admin(role: 'ADMIN'),
  editor(role: 'EDITOR'),
  viewer(role: 'VIEWER');
  
  const UserRole({required this.role});
  
  final String role;
 }

字符串

  • 使用特定的名称和颜色设置不同类型的状态:
import 'package:flutter/material.dart';

 enum Status { 
  pending(status: 'PENDING', color: COLORS.orange), 
  success(status: 'SUCCESS', color: COLORS.green),
  rejected(status: 'REJECTED', color: COLORS.red);
  
  const Status({required this.status, required this.color});
  
  String status;
  Color color;
 }

  • 你甚至可以在json_annotation包中使用枚举:
import 'package:flutter/material.dart';
 import 'package:json_annotation/json_annotation.dart';

 enum Status { 
  
  @JsonValue('pending')
  pending(status: 'PENDING', color: COLORS.orange), 
  
  @JsonValue('success')
  success(status: 'SUCCESS', color: COLORS.green),
  
  @JsonValue('rejected')
  rejected(status: 'REJECTED', color: COLORS.red);
  
  const Status({required this.status, required this.color});
  
  String status;
  Color color;
 }


如果你想了解更多关于枚举和Flutter. Click here中的最佳实践,

相关问题