import 'package:fl_clash/common/common.dart'; import 'package:fl_clash/enum/enum.dart'; import 'package:flutter/material.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'common.dart'; import 'core.dart'; part 'generated/app.freezed.dart'; typedef DelayMap = Map>; @freezed class AppState with _$AppState { const factory AppState({ @Default(false) bool isInit, @Default(false) bool backBlock, @Default(PageLabel.dashboard) PageLabel pageLabel, @Default([]) List packages, @Default(0) int sortNum, required Size viewSize, @Default({}) DelayMap delayMap, @Default([]) List groups, @Default(0) int checkIpNum, Brightness? brightness, int? runTime, @Default([]) List providers, String? localIp, required FixedList requests, required int version, required FixedList logs, required FixedList traffics, required Traffic totalTraffic, @Default("") String proxiesQuery, @Default(false) bool realTunEnable, }) = _AppState; } extension AppStateExt on AppState { ViewMode get viewMode => utils.getViewMode(viewSize.width); bool get isStart => runTime != null; }