Issue's fixes
parent
4b8422617f
commit
4a8c27821c
Binary file not shown.
|
After Width: | Height: | Size: 8.8 KiB |
@ -0,0 +1,65 @@
|
||||
// To parse this JSON data, do
|
||||
//
|
||||
// final refreshToken = refreshTokenFromJson(jsonString);
|
||||
|
||||
import 'dart:convert';
|
||||
|
||||
RefreshToken refreshTokenFromJson(String str) => RefreshToken.fromJson(json.decode(str));
|
||||
|
||||
String refreshTokenToJson(RefreshToken data) => json.encode(data.toJson());
|
||||
|
||||
class RefreshToken {
|
||||
RefreshToken({
|
||||
this.totalItemsCount,
|
||||
this.data,
|
||||
this.messageStatus,
|
||||
this.message,
|
||||
});
|
||||
|
||||
final dynamic? totalItemsCount;
|
||||
final RefreshData? data;
|
||||
final int? messageStatus;
|
||||
final String? message;
|
||||
|
||||
factory RefreshToken.fromJson(Map<String, dynamic> json) => RefreshToken(
|
||||
totalItemsCount: json["totalItemsCount"],
|
||||
data: json["data"] == null ? null : RefreshData.fromJson(json["data"]),
|
||||
messageStatus: json["messageStatus"] == null ? null : json["messageStatus"],
|
||||
message: json["message"] == null ? null : json["message"],
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"totalItemsCount": totalItemsCount,
|
||||
"data": data == null ? null : data!.toJson(),
|
||||
"messageStatus": messageStatus == null ? null : messageStatus,
|
||||
"message": message == null ? null : message,
|
||||
};
|
||||
}
|
||||
|
||||
class RefreshData {
|
||||
RefreshData({
|
||||
this.accessToken,
|
||||
this.refreshToken,
|
||||
this.expiryDate,
|
||||
this.userInfo,
|
||||
});
|
||||
|
||||
final String? accessToken;
|
||||
final String? refreshToken;
|
||||
final DateTime? expiryDate;
|
||||
final dynamic? userInfo;
|
||||
|
||||
factory RefreshData.fromJson(Map<String, dynamic> json) => RefreshData(
|
||||
accessToken: json["accessToken"] == null ? null : json["accessToken"],
|
||||
refreshToken: json["refreshToken"] == null ? null : json["refreshToken"],
|
||||
expiryDate: json["expiryDate"] == null ? null : DateTime.parse(json["expiryDate"]),
|
||||
userInfo: json["userInfo"],
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"accessToken": accessToken == null ? null : accessToken,
|
||||
"refreshToken": refreshToken == null ? null : refreshToken,
|
||||
"expiryDate": expiryDate == null ? null : expiryDate!.toIso8601String(),
|
||||
"userInfo": userInfo,
|
||||
};
|
||||
}
|
||||
@ -0,0 +1,146 @@
|
||||
import 'package:car_provider_app/api/client/branch_api_client.dart';
|
||||
import 'package:car_provider_app/extensions/int_extensions.dart';
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/svg.dart';
|
||||
|
||||
import '../../classes/utils.dart';
|
||||
import '../../config/routes.dart';
|
||||
import '../../generated/locale_keys.g.dart';
|
||||
|
||||
import '../../models/m_response.dart';
|
||||
import '../../models/profile/branch.dart';
|
||||
import '../../utils/navigator.dart';
|
||||
import '../../widgets/show_fill_button.dart';
|
||||
|
||||
class BranchDetailPage extends StatefulWidget {
|
||||
@override
|
||||
State<BranchDetailPage> createState() => _BranchDetailPageState();
|
||||
}
|
||||
|
||||
class _BranchDetailPageState extends State<BranchDetailPage> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text(
|
||||
LocaleKeys.defineBranches.tr(),
|
||||
),
|
||||
),
|
||||
body: Container(
|
||||
width: double.infinity,
|
||||
height: double.infinity,
|
||||
child: Column(
|
||||
children: [
|
||||
Expanded(
|
||||
child: FutureBuilder<Branch>(
|
||||
future: BranchApiClent().fetchBranch(),
|
||||
builder: (context, snapshot) {
|
||||
if (snapshot.hasData) {
|
||||
return snapshot.data!.data!.length == 0
|
||||
? Center(child: Text(LocaleKeys.no_branch.tr()))
|
||||
: ListView.separated(
|
||||
itemBuilder: (context, index) {
|
||||
return Row(
|
||||
children: [
|
||||
Container(
|
||||
width: 44,
|
||||
height: 44,
|
||||
color: Colors.blue,
|
||||
padding: EdgeInsets.all(6),
|
||||
child: SvgPicture.asset(
|
||||
"assets/icons/ic_branchs.svg",
|
||||
color: Colors.white,
|
||||
),
|
||||
),
|
||||
12.width,
|
||||
Expanded(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
snapshot.data!.data![index].branchName ?? "",
|
||||
style: TextStyle(
|
||||
fontSize: 18,
|
||||
fontWeight: FontWeight.bold,
|
||||
),
|
||||
),
|
||||
8.height,
|
||||
Text(
|
||||
snapshot.data!.data![index].address ?? "N/A",
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
ShowFillButton(
|
||||
title: LocaleKeys.edit.tr(),
|
||||
fontSize: 12,
|
||||
width: 50,
|
||||
height: 30,
|
||||
horizontalPadding: 8,
|
||||
onPressed: () async {
|
||||
await navigateWithName(context, AppRoutes.defineBranch, arguments: snapshot.data!.data![index]);
|
||||
setState(() {});
|
||||
},
|
||||
),
|
||||
12.width,
|
||||
ShowFillButton(
|
||||
title: LocaleKeys.remove.tr(),
|
||||
fontSize: 12,
|
||||
width: 50,
|
||||
height: 30,
|
||||
horizontalPadding: 8,
|
||||
onPressed: () async {
|
||||
Utils.showLoading(context);
|
||||
MResponse res =
|
||||
await BranchApiClent().updateBranch(snapshot.data!.data![index].id ?? 0, snapshot.data!.data![index].branchName??"", snapshot.data!.data![index].branchDescription??"", snapshot.data!.data![index].cityId.toString(), snapshot.data!.data![index].address??"", snapshot.data!.data![index].latitude.toString(), snapshot.data!.data![index].longitude.toString(),isNeedToDelete: false);
|
||||
Utils.hideLoading(context);
|
||||
if (res.messageStatus == 1) {
|
||||
Utils.showToast(LocaleKeys.branch_deleted.tr());
|
||||
setState(() {});
|
||||
} else {
|
||||
Utils.showToast(res.message ?? "");
|
||||
}
|
||||
},
|
||||
)
|
||||
],
|
||||
);
|
||||
},
|
||||
separatorBuilder: (context, index) {
|
||||
return 12.height;
|
||||
},
|
||||
itemCount: snapshot.data!.data!.length,
|
||||
padding: EdgeInsets.all(12),
|
||||
);
|
||||
} else {
|
||||
return Center(
|
||||
child: CircularProgressIndicator(),
|
||||
);
|
||||
}
|
||||
},
|
||||
)),
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(12.0),
|
||||
child: ShowFillButton(
|
||||
title: LocaleKeys.createBranch.tr(),
|
||||
onPressed: () async {
|
||||
await navigateWithName(context, AppRoutes.defineBranch, arguments: new BranchData());
|
||||
setState(() {});
|
||||
},
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -1,119 +0,0 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:car_provider_app/models/config_model.dart';
|
||||
|
||||
import 'package:shared_preferences/shared_preferences.dart'
|
||||
as SharedPrefsPlugin;
|
||||
|
||||
///
|
||||
/// Taken from AlarmGuide Project
|
||||
///
|
||||
|
||||
abstract class ISharedPreferences {
|
||||
Future<int?> get authState;
|
||||
|
||||
Future<void> setAuthState(int authState);
|
||||
|
||||
Future<int?> get configState;
|
||||
|
||||
Future<void> setConfigState(int confState);
|
||||
|
||||
Future<ConfigModel?> get config;
|
||||
|
||||
Future<void> setConfig(ConfigModel config);
|
||||
|
||||
Future<bool?> get promotionNotificationsEnabled;
|
||||
|
||||
Future<void> setPromotionNotificationEnabled(bool newSetting);
|
||||
|
||||
Future<bool?> get helpAlreadyShown;
|
||||
|
||||
Future<void> setHelpAlreadyShown();
|
||||
|
||||
Future<int?> get useS3;
|
||||
|
||||
Future<void> setUseS3(int value);
|
||||
}
|
||||
|
||||
class SharedPreferences implements ISharedPreferences {
|
||||
static const String _AUTH_STATE_KEY = "auth_key";
|
||||
static const String _CONFIG_KEY = "config";
|
||||
static const String _CONFIG_STATE_KEY = "config_key";
|
||||
static const String _PROMOTION_NOTIFICATION_KEY = "promotion";
|
||||
static const String _HELP_ALREADY_SHOWN = "help_shown";
|
||||
static const String _USE_S3 = "s3";
|
||||
|
||||
@override
|
||||
Future<int?> get authState async {
|
||||
final sharedPrefs = await SharedPrefsPlugin.SharedPreferences.getInstance();
|
||||
return sharedPrefs.getInt(_AUTH_STATE_KEY);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> setAuthState(int authState) async {
|
||||
final sharedPrefs = await SharedPrefsPlugin.SharedPreferences.getInstance();
|
||||
sharedPrefs.setInt(_AUTH_STATE_KEY, authState);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<ConfigModel?> get config async {
|
||||
final sharedPrefs = await SharedPrefsPlugin.SharedPreferences.getInstance();
|
||||
final configAsJson = sharedPrefs.getString(_CONFIG_KEY);
|
||||
return ConfigModel.fromJson(jsonDecode(configAsJson!));
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> setConfig(ConfigModel config) async {
|
||||
final sharedPrefs = await SharedPrefsPlugin.SharedPreferences.getInstance();
|
||||
sharedPrefs.setString(_CONFIG_KEY, jsonEncode(config));
|
||||
setConfigState(1);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool?> get promotionNotificationsEnabled async {
|
||||
final sharedPrefs = await SharedPrefsPlugin.SharedPreferences.getInstance();
|
||||
return sharedPrefs.getBool(_PROMOTION_NOTIFICATION_KEY);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> setPromotionNotificationEnabled(bool newSetting) async {
|
||||
final sharedPrefs = await SharedPrefsPlugin.SharedPreferences.getInstance();
|
||||
sharedPrefs.setBool(_PROMOTION_NOTIFICATION_KEY, newSetting);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool?> get helpAlreadyShown async {
|
||||
final sharedPrefs = await SharedPrefsPlugin.SharedPreferences.getInstance();
|
||||
return sharedPrefs.getBool(_HELP_ALREADY_SHOWN);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> setHelpAlreadyShown() async {
|
||||
final sharedPrefs = await SharedPrefsPlugin.SharedPreferences.getInstance();
|
||||
sharedPrefs.setBool(_HELP_ALREADY_SHOWN, true);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<int?> get configState async {
|
||||
final sharedPrefs = await SharedPrefsPlugin.SharedPreferences.getInstance();
|
||||
return sharedPrefs.getInt(_CONFIG_STATE_KEY);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> setConfigState(int confState) async {
|
||||
final sharedPrefs = await SharedPrefsPlugin.SharedPreferences.getInstance();
|
||||
sharedPrefs.setInt(_CONFIG_STATE_KEY, confState);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> setUseS3(int value) async {
|
||||
final sharedPrefs = await SharedPrefsPlugin.SharedPreferences.getInstance();
|
||||
sharedPrefs.setInt(_USE_S3, value);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<int?> get useS3 async {
|
||||
final sharedPrefs = await SharedPrefsPlugin.SharedPreferences.getInstance();
|
||||
return sharedPrefs.getInt(_USE_S3);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue