Merge remote-tracking branch 'origin/main_design2.0' into main_design2.0

main_design2.0
nextwo 2 years ago
commit 9aba167e1f

@ -148,12 +148,16 @@ class AssetTransferProvider extends ChangeNotifier {
} }
} }
Future<int> updateRequest({@required AssetTransfer assetTransfer}) async { Future<int> updateRequest(BuildContext context, {@required AssetTransfer assetTransfer}) async {
Response response; Response response;
try { try {
assetTransfer.receiverStartDate = assetTransfer.timer?.startAt?.toIso8601String(); showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
assetTransfer.receiverEndDate = assetTransfer.timer?.endAt?.toIso8601String(); assetTransfer.receiverStartDate = assetTransfer.receiverTimer?.startAt?.toIso8601String();
assetTransfer.receiverWorkingHours = (((assetTransfer.timer?.durationInSecond ?? 0) / 60) / 60).toStringAsFixed(2); assetTransfer.receiverEndDate = assetTransfer.receiverTimer?.endAt?.toIso8601String();
assetTransfer.receiverWorkingHours = (((assetTransfer.receiverTimer?.durationInSecond ?? 0) * 60) * 60).toStringAsFixed(2);
assetTransfer.senderStartDate = assetTransfer.senderTimer?.startAt?.toIso8601String();
assetTransfer.senderEndDate = assetTransfer.senderTimer?.endAt?.toIso8601String();
assetTransfer.senderWorkingHours = (((assetTransfer.senderTimer?.durationInSecond ?? 0) * 60) * 60).toStringAsFixed(2);
response = await ApiManager.instance.put(URLs.updateDeviceTransfer, body: assetTransfer.toJson()); response = await ApiManager.instance.put(URLs.updateDeviceTransfer, body: assetTransfer.toJson());
print(response.body); print(response.body);
@ -166,15 +170,21 @@ class AssetTransferProvider extends ChangeNotifier {
stateCode = response.statusCode; stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
reset(); reset();
Fluttertoast.showToast(msg: context.translation.successfulRequestMessage);
Navigator.of(context).pop();
// oldModel.fromDeviceTransfer( // oldModel.fromDeviceTransfer(
// DeviceTransfer.fromJson( // DeviceTransfer.fromJson(
// json.decode(utf8.decode(response.bodyBytes))[0] // json.decode(utf8.decode(response.bodyBytes))[0]
// ) // )
// ); // );
notifyListeners(); notifyListeners();
} else {
Fluttertoast.showToast(msg: "${context.translation.failedToCompleteRequest} :${json.decode(response.body)['message']}");
} }
Navigator.pop(context);
return response.statusCode; return response.statusCode;
} catch (error) { } catch (error) {
Navigator.pop(context);
return -1; return -1;
} }
} }

@ -40,9 +40,9 @@ class NotificationsProvider extends ChangeNotifier {
/// for more details check http state manager /// for more details check http state manager
/// lib\controllers\http_status_manger\http_status_manger.dart /// lib\controllers\http_status_manger\http_status_manger.dart
Future<int> getSystemNotifications({ Future<int> getSystemNotifications({
@required String host, String host,
@required User user, User user,
@required int hospitalId, int hospitalId,
}) async { }) async {
if (isLoading == true) return -2; if (isLoading == true) return -2;
isLoading = true; isLoading = true;

@ -66,7 +66,8 @@ class AssetTransfer {
this.senderSiteName, this.senderSiteName,
this.supplierId, this.supplierId,
this.supplierName, this.supplierName,
this.timer, this.senderTimer,
this.receiverTimer,
}); });
AssetTransfer.fromJson(dynamic json) { AssetTransfer.fromJson(dynamic json) {
@ -107,10 +108,15 @@ class AssetTransfer {
receiverTravelingHours = json['receiverTravelingHours']; receiverTravelingHours = json['receiverTravelingHours'];
receiverEngSignature = json['receiverEngSignature']; receiverEngSignature = json['receiverEngSignature'];
try { try {
timer = TimerModel(startAt: DateTime.tryParse(receiverStartDate ?? ""), endAt: DateTime.tryParse(receiverEndDate)); receiverTimer = TimerModel(startAt: DateTime.tryParse(receiverStartDate ?? ""), endAt: DateTime.tryParse(receiverEndDate));
if (timer.endAt != null && timer.startAt != null) { senderTimer = TimerModel(startAt: DateTime.tryParse(senderStartDate ?? ""), endAt: DateTime.tryParse(senderEndDate));
timer.durationInSecond = (timer.endAt.difference(timer.startAt))?.inSeconds; if (receiverTimer.endAt != null && receiverTimer.startAt != null) {
receiverWorkingHours = (((timer.durationInSecond ?? 0) / 60) / 60)?.toStringAsFixed(2); receiverTimer.durationInSecond = (receiverTimer.endAt.difference(receiverTimer.startAt))?.inSeconds;
receiverWorkingHours = (((receiverTimer.durationInSecond ?? 0) / 60) / 60)?.toStringAsFixed(2);
}
if (senderTimer.endAt != null && senderTimer.startAt != null) {
senderTimer.durationInSecond = (senderTimer.endAt.difference(senderTimer.startAt))?.inSeconds;
senderWorkingHours = (((senderTimer.durationInSecond ?? 0) / 60) / 60)?.toStringAsFixed(2);
} }
} catch (e) { } catch (e) {
print(e); print(e);
@ -206,7 +212,8 @@ class AssetTransfer {
bool applied; bool applied;
String createdOn; String createdOn;
String modifiedOn; String modifiedOn;
TimerModel timer = TimerModel(); TimerModel senderTimer = TimerModel();
TimerModel receiverTimer = TimerModel();
AssetTransfer copyWith({ AssetTransfer copyWith({
num id, num id,
@ -268,7 +275,8 @@ class AssetTransfer {
int manufacturerId, int manufacturerId,
String manufacturerName, String manufacturerName,
String destDepartmentName, String destDepartmentName,
TimerModel timer, TimerModel senderTimer,
TimerModel receiverTimer,
}) => }) =>
AssetTransfer( AssetTransfer(
id: id ?? this.id, id: id ?? this.id,
@ -328,7 +336,8 @@ class AssetTransfer {
modelId: modelId ?? this.modelId, modelId: modelId ?? this.modelId,
modelName: modelName ?? this.modelName, modelName: modelName ?? this.modelName,
manufacturerId: manufacturerId ?? this.manufacturerId, manufacturerId: manufacturerId ?? this.manufacturerId,
timer: timer ?? this.timer, senderTimer: senderTimer ?? this.senderTimer,
receiverTimer: receiverTimer ?? this.receiverTimer,
manufacturerName: manufacturerName ?? this.manufacturerName); manufacturerName: manufacturerName ?? this.manufacturerName);
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
@ -439,6 +448,7 @@ class AssetTransfer {
} }
fromDetails(AssetTransfer assetTransfer) { fromDetails(AssetTransfer assetTransfer) {
if (assetTransfer == null) return;
id = assetTransfer.id; id = assetTransfer.id;
transferNo = assetTransfer.transferNo; transferNo = assetTransfer.transferNo;
transferCode = assetTransfer.transferCode; transferCode = assetTransfer.transferCode;
@ -497,6 +507,8 @@ class AssetTransfer {
modelName = assetTransfer.modelName; modelName = assetTransfer.modelName;
manufacturerId = assetTransfer.manufacturerId; manufacturerId = assetTransfer.manufacturerId;
manufacturerName = assetTransfer.manufacturerName; manufacturerName = assetTransfer.manufacturerName;
senderTimer = assetTransfer.senderTimer;
receiverTimer = assetTransfer.receiverTimer;
} }
Future<bool> validate(BuildContext context) async { Future<bool> validate(BuildContext context) async {

@ -40,10 +40,10 @@ class AppDrawer extends StatelessWidget {
child: Padding( child: Padding(
padding: const EdgeInsets.all(1), // Border radius padding: const EdgeInsets.all(1), // Border radius
child: ClipOval( child: ClipOval(
child: (snapshot.user.profilePhotoName?.isNotEmpty ?? false) child: snapshot.profileImage != null
? Image.network(snapshot.user.profilePhotoName)
: snapshot.profileImage != null
? Image.file(snapshot.profileImage) ? Image.file(snapshot.profileImage)
: (snapshot.user.profilePhotoName?.isNotEmpty ?? false)
? Image.network(snapshot.user.profilePhotoName)
: const Icon( : const Icon(
Icons.person, Icons.person,
size: 50, size: 50,

@ -1,9 +1,12 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/enums/user_types.dart';
import 'package:test_sa/new_views/pages/new_gas_refill_request_page.dart'; import 'package:test_sa/new_views/pages/new_gas_refill_request_page.dart';
import 'package:test_sa/views/pages/device_transfer/request_device_transfer.dart'; import 'package:test_sa/views/pages/device_transfer/request_device_transfer.dart';
import 'package:test_sa/views/pages/user/requests/create_service_request_page.dart'; import 'package:test_sa/views/pages/user/requests/create_service_request_page.dart';
@ -32,6 +35,7 @@ class _AppFloatingActionButtonState extends State<AppFloatingActionButton> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final user = Provider.of<UserProvider>(context, listen: false).user;
const duration = Duration(milliseconds: 250); const duration = Duration(milliseconds: 250);
return Column( return Column(
mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end,
@ -58,11 +62,11 @@ class _AppFloatingActionButtonState extends State<AppFloatingActionButton> {
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
fabItem(context.translation.gasRefillRequest, "gas_refill_request", NewGasRefillRequestPage.routeName), if (user.type == UsersTypes.normal_user) fabItem(context.translation.gasRefillRequest, "gas_refill_request", NewGasRefillRequestPage.routeName),
1.divider.paddingOnly(top: 16, bottom: 16), if (user.type == UsersTypes.normal_user) 1.divider.paddingOnly(top: 16, bottom: 16),
fabItem(context.translation.transferRequest, "transfer_request", RequestDeviceTransfer.id), fabItem(context.translation.transferRequest, "transfer_request", RequestDeviceTransfer.id),
1.divider.paddingOnly(top: 16, bottom: 16), if (user.type == UsersTypes.normal_user) 1.divider.paddingOnly(top: 16, bottom: 16),
fabItem(context.translation.serviceRequest, "service_request", CreateServiceRequestPage.id), if (user.type == UsersTypes.normal_user) fabItem(context.translation.serviceRequest, "service_request", CreateServiceRequestPage.id),
], ],
), ),
), ),

@ -21,13 +21,16 @@ class ProgressFragment extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
const Map<String, double> statuses = {
"Completed": 12,
"In Progress": 12,
"Open": 12,
};
return Consumer<AllRequestsProvider>( return Consumer<AllRequestsProvider>(
builder: (context, snapshot, _) => Column( builder: (context, snapshot, _) {
Map<String, double> statuses = {
"Completed": snapshot.completedRequests?.requestsDetails?.length?.toDouble() ?? 0.0,
"In Progress": snapshot.inProgressRequests?.requestsDetails?.length?.toDouble() ?? 0.0,
"Open": snapshot.openRequests.requestsDetails?.length?.toDouble() ?? 0.0,
};
int total = (snapshot.completedRequests?.requestsDetails?.length ?? 0) + (snapshot.inProgressRequests?.requestsDetails?.length ?? 0) + (snapshot.openRequests?.requestsDetails?.length ?? 0);
return Column(
children: [ children: [
AspectRatio( AspectRatio(
aspectRatio: 398 / 237, aspectRatio: 398 / 237,
@ -39,11 +42,12 @@ class ProgressFragment extends StatelessWidget {
initialAngleInDegree: 270, initialAngleInDegree: 270,
chartType: ChartType.ring, chartType: ChartType.ring,
ringStrokeWidth: 40.toScreenWidth, ringStrokeWidth: 40.toScreenWidth,
centerText: "${context.translation.total}\n20", centerText: "${context.translation.total}\n$total",
centerTextStyle: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), centerTextStyle: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
legendOptions: const LegendOptions(showLegends: false), legendOptions: const LegendOptions(showLegends: false),
chartValuesOptions: ChartValuesOptions( chartValuesOptions: ChartValuesOptions(
chartValueBackgroundColor: Colors.transparent, chartValueBackgroundColor: Colors.white,
showChartValuesInPercentage: true,
chartValueStyle: AppTextStyles.heading6.copyWith(color: AppColor.neutral20), chartValueStyle: AppTextStyles.heading6.copyWith(color: AppColor.neutral20),
showChartValuesOutside: true, showChartValuesOutside: true,
), ),
@ -87,7 +91,8 @@ class ProgressFragment extends StatelessWidget {
), ),
).expanded, ).expanded,
], ],
), );
},
); );
} }
// //

@ -1,6 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/all_requests_provider.dart'; import 'package:test_sa/controllers/providers/api/all_requests_provider.dart';
import 'package:test_sa/controllers/providers/api/notifications_provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
@ -28,6 +29,7 @@ class _DashboardPageState extends State<DashboardPage> {
void initState() { void initState() {
super.initState(); super.initState();
Provider.of<AllRequestsProvider>(context, listen: false).getRequests(); Provider.of<AllRequestsProvider>(context, listen: false).getRequests();
Provider.of<NotificationsProvider>(context, listen: false).getSystemNotifications();
} }
@override @override
@ -54,10 +56,10 @@ class _DashboardPageState extends State<DashboardPage> {
child: Padding( child: Padding(
padding: const EdgeInsets.all(1), // Border radius padding: const EdgeInsets.all(1), // Border radius
child: ClipOval( child: ClipOval(
child: (snapshot.user.profilePhotoName?.isNotEmpty ?? false) child: snapshot.profileImage != null
? Image.network(snapshot.user.profilePhotoName)
: snapshot.profileImage != null
? Image.file(snapshot.profileImage) ? Image.file(snapshot.profileImage)
: (snapshot.user.profilePhotoName?.isNotEmpty ?? false)
? Image.network(snapshot.user.profilePhotoName)
: const Icon( : const Icon(
Icons.person, Icons.person,
size: 24, size: 24,

@ -45,6 +45,8 @@ class AColors {
static Color getRequestStatusColorByName(String status) { static Color getRequestStatusColorByName(String status) {
switch ((status ?? "").toLowerCase()) { switch ((status ?? "").toLowerCase()) {
case "medium":
return AColors.statusBlue;
case "in progress": case "in progress":
return AColors.statusYellowLight; return AColors.statusYellowLight;
case "complete": case "complete":

@ -1,5 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/asset_transfer_provider.dart'; import 'package:test_sa/controllers/providers/api/asset_transfer_provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart';
@ -9,7 +8,6 @@ import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/device/asset_transfer.dart'; import 'package:test_sa/models/device/asset_transfer.dart';
import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/pages/device_transfer/update_device_transfer.dart'; import 'package:test_sa/views/pages/device_transfer/update_device_transfer.dart';
import 'package:test_sa/views/widgets/loaders/app_loading.dart'; import 'package:test_sa/views/widgets/loaders/app_loading.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
@ -124,8 +122,8 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
? StatusLabel( ? StatusLabel(
label: _model?.senderMachineStatusName, label: _model?.senderMachineStatusName,
id: _model?.senderMachineStatusId, id: _model?.senderMachineStatusId,
textColor: AColors.getRequestStatusTextColor(getIdstatus(_model.senderMachineStatusName)), textColor: AColors.getRequestStatusTextColorByName(_model.senderMachineStatusName),
backgroundColor: AColors.getRequestStatusColor(getIdstatus(_model.senderMachineStatusName))) backgroundColor: AColors.getRequestStatusColorByName(_model.senderMachineStatusName))
: null, : null,
), ),
8.height, 8.height,
@ -143,8 +141,8 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
? StatusLabel( ? StatusLabel(
label: _model?.receiverMachineStatusName ?? "", label: _model?.receiverMachineStatusName ?? "",
id: _model?.receiverMachineStatusId, id: _model?.receiverMachineStatusId,
textColor: AColors.getRequestStatusTextColor(getIdstatus(_model.receiverMachineStatusName)), textColor: AColors.getRequestStatusTextColorByName(_model.receiverMachineStatusName),
backgroundColor: AColors.getRequestStatusColor(getIdstatus(_model.receiverMachineStatusName))) backgroundColor: AColors.getRequestStatusColorByName(_model.receiverMachineStatusName))
: null, : null,
), ),
], ],
@ -185,18 +183,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
if (isSender if (isSender
? (_model?.senderMachineStatusName?.toLowerCase() != "closed" && _model?.senderMachineStatusName?.toLowerCase() != "completed") ? (_model?.senderMachineStatusName?.toLowerCase() != "closed" && _model?.senderMachineStatusName?.toLowerCase() != "completed")
: (_model?.receiverMachineStatusName?.toLowerCase() != "closed" && _model?.receiverMachineStatusName?.toLowerCase() != "completed")) : (_model?.receiverMachineStatusName?.toLowerCase() != "closed" && _model?.receiverMachineStatusName?.toLowerCase() != "completed"))
CircleAvatar( "edit".toSvgAsset(height: 48, width: 48).onPress(isSender
radius: 25,
backgroundColor: AppColor.neutral30,
child: CircleAvatar(
radius: 24,
backgroundColor: Colors.white,
child: Padding(
padding: const EdgeInsets.only(left: 3.0),
child: SvgPicture.asset('assets/images/update.svg'),
),
),
).onPress(isSender
? () { ? () {
Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateDeviceTransfer(model: _model, isSender: isSender))); Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateDeviceTransfer(model: _model, isSender: isSender)));
} }
@ -216,18 +203,4 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
], ],
).toShadowContainer(context); ).toShadowContainer(context);
} }
int getIdstatus(String status) {
switch (status) {
case "Closed":
return 3;
break;
case "Open":
return 1;
break;
case "In Progress":
return 2;
break;
}
}
} }

@ -1,4 +1,5 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:developer';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -48,11 +49,11 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>(); final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
_update() async { _update() async {
if (_formModel?.timer?.startAt == null) { if ((widget.isSender && _formModel?.senderTimer?.startAt == null) || (!widget.isSender && _formModel?.receiverTimer?.startAt == null)) {
await Fluttertoast.showToast(msg: "Working Hours Required"); await Fluttertoast.showToast(msg: "Working Hours Required");
return false; return false;
} }
if (_formModel?.timer?.endAt == null) { if ((widget.isSender && _formModel?.senderTimer?.endAt == null) || (!widget.isSender && _formModel?.receiverTimer?.startAt == null)) {
await Fluttertoast.showToast(msg: "Please Stop The Timer"); await Fluttertoast.showToast(msg: "Please Stop The Timer");
return false; return false;
} }
@ -62,19 +63,7 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
return false; return false;
} }
_formKey.currentState.save(); _formKey.currentState.save();
await _deviceTransferProvider.updateRequest(context, assetTransfer: _formModel);
_isLoading = true;
setState(() {});
int status = await _deviceTransferProvider.updateRequest(assetTransfer: _formModel);
_isLoading = false;
setState(() {});
if (status >= 200 && status < 300) {
Fluttertoast.showToast(
msg: context.translation.successfulRequestMessage,
);
_validate = false;
Navigator.of(context).pop();
}
} }
// @override // @override
@ -122,6 +111,10 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
AppTextFormField( AppTextFormField(
initialValue: widget.isSender ? _formModel.senderTravelingHours : _formModel.receiverTravelingHours, initialValue: widget.isSender ? _formModel.senderTravelingHours : _formModel.receiverTravelingHours,
labelText: context.translation.travelingHours, labelText: context.translation.travelingHours,
onChange: (text) {
log(widget.isSender ? _formModel.senderStartDate : _formModel.receiverStartDate);
log(widget.isSender ? _formModel.senderEndDate : _formModel.receiverEndDate);
},
onSaved: (value) { onSaved: (value) {
widget.isSender ? _formModel.senderTravelingHours : _formModel.receiverTravelingHours = value; widget.isSender ? _formModel.senderTravelingHours : _formModel.receiverTravelingHours = value;
//_formModel?.workingHours = double.tryParse(value); //_formModel?.workingHours = double.tryParse(value);
@ -133,10 +126,14 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
8.height, 8.height,
AppTimer( AppTimer(
label: context.translation.workingHours, label: context.translation.workingHours,
timer: _formModel.timer, timer: widget.isSender ? _formModel.senderTimer : _formModel.receiverTimer,
enabled: _formModel.receiverEndDate == null, enabled: widget.isSender ? _formModel.senderEndDate == null : _formModel.receiverEndDate == null,
onChange: (timer) async { onChange: (timer) async {
_formModel.timer = timer; if (widget.isSender) {
_formModel.senderTimer = timer;
} else {
_formModel.receiverTimer = timer;
}
return true; return true;
}, },
), ),
@ -175,7 +172,7 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
8.height, 8.height,
ESignature( ESignature(
title: "Signature", title: "Signature",
oldSignature: widget.isSender ? widget.model.senderEngSignature : widget.model.receiverEngSignature, oldSignature: widget.isSender ? widget.model?.senderEngSignature : widget.model?.receiverEngSignature,
newSignature: _signature, newSignature: _signature,
onSaved: (signature) { onSaved: (signature) {
_signature = signature; _signature = signature;

@ -71,10 +71,10 @@ class _ProfilePageState extends State<ProfilePage> {
child: Padding( child: Padding(
padding: const EdgeInsets.all(1), // Border radius padding: const EdgeInsets.all(1), // Border radius
child: ClipOval( child: ClipOval(
child: (snapshot.user.profilePhotoName?.isNotEmpty ?? false) child: snapshot.profileImage != null
? Image.network(snapshot.user.profilePhotoName)
: snapshot.profileImage != null
? Image.file(snapshot.profileImage) ? Image.file(snapshot.profileImage)
: (snapshot.user.profilePhotoName?.isNotEmpty ?? false)
? Image.network(snapshot.user.profilePhotoName)
: const Icon( : const Icon(
Icons.person, Icons.person,
size: 50, size: 50,

Loading…
Cancel
Save