79 lines
2.3 KiB
Dart
79 lines
2.3 KiB
Dart
|
|
import 'package:flutter/material.dart';
|
|
import '../../models/located_address.dart';
|
|
import '../../models/cart_info.dart';
|
|
import '../../models/user.dart';
|
|
|
|
@immutable
|
|
class AppState {
|
|
final BuildContext context;
|
|
final Locale locale;
|
|
final User user;
|
|
final String redirectRoute;
|
|
final List<CartInfo> cartInfos;
|
|
final LocatedAddress locatedAddress;
|
|
final String fcmToken;
|
|
final List<int> lastVisit;
|
|
final String deviceId;
|
|
final String tableNumber;
|
|
|
|
AppState({this.context, this.locale, this.user, this.redirectRoute,
|
|
this.cartInfos, this.locatedAddress, this.fcmToken, this.lastVisit,
|
|
this.deviceId, this.tableNumber});
|
|
|
|
factory AppState.init() => AppState();
|
|
|
|
AppState copyWith({
|
|
BuildContext context,
|
|
Locale locale}) {
|
|
return AppState(
|
|
context: context ?? this.context,
|
|
locale: locale ?? this.locale,
|
|
user: user ?? this.user,
|
|
redirectRoute: redirectRoute ?? this.redirectRoute,
|
|
cartInfos: cartInfos ?? this.cartInfos,
|
|
locatedAddress: locatedAddress ?? this.locatedAddress,
|
|
fcmToken: fcmToken ?? this.fcmToken,
|
|
lastVisit: lastVisit ?? this.lastVisit,
|
|
deviceId: deviceId ?? this.deviceId,
|
|
tableNumber: tableNumber ?? this.tableNumber
|
|
);
|
|
}
|
|
|
|
@override
|
|
int get hashCode =>
|
|
context.hashCode ^
|
|
locale.hashCode ^
|
|
user.hashCode ^
|
|
redirectRoute.hashCode ^
|
|
cartInfos.hashCode ^
|
|
locatedAddress.hashCode ^
|
|
fcmToken.hashCode ^
|
|
lastVisit.hashCode ^
|
|
deviceId.hashCode ^
|
|
tableNumber.hashCode;
|
|
|
|
|
|
@override
|
|
bool operator ==(Object other) =>
|
|
identical(this, other) ||
|
|
other is AppState &&
|
|
context == other.context &&
|
|
locale == other.locale &&
|
|
user == other.user &&
|
|
redirectRoute == other.redirectRoute &&
|
|
cartInfos == other.cartInfos &&
|
|
locatedAddress == other.locatedAddress &&
|
|
fcmToken == other.fcmToken &&
|
|
lastVisit == other.lastVisit &&
|
|
deviceId == other.deviceId &&
|
|
tableNumber == other.tableNumber;
|
|
|
|
@override
|
|
String toString() =>
|
|
'AppState(context: $context, locale: $locale), user: $user, '
|
|
'redirectRoute: $redirectRoute, cart info: $cartInfos, '
|
|
'locate address: $locatedAddress, fcm: $fcmToken, '
|
|
'last visit: $lastVisit, deviceId: $deviceId, '
|
|
'tableNumber: $tableNumber';
|
|
} |