Files
flutter_wisetronic/lib/store/state/app_state.dart
2021-08-31 13:28:33 -04:00

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';
}