mirror of
https://git.meshkee.com/applications/cssd.git
synced 2026-10-13 11:48:56 +03:30
fix bugs and set progress and toast for my items server events
This commit is contained in:
@@ -11,11 +11,14 @@ import 'package:cssd/widgets/MyItemsScreens/Detail/cancel_transfer_button.dart';
|
|||||||
import 'package:cssd/widgets/MyItemsScreens/Detail/transfer_data_box.dart';
|
import 'package:cssd/widgets/MyItemsScreens/Detail/transfer_data_box.dart';
|
||||||
import 'package:cssd/widgets/MyItemsScreens/Detail/transfer_destroy_button.dart';
|
import 'package:cssd/widgets/MyItemsScreens/Detail/transfer_destroy_button.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:fluttertoast/fluttertoast.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
|
||||||
class ItemsTransferScreen extends StatefulWidget {
|
class ItemsTransferScreen extends StatefulWidget {
|
||||||
final bool? isAdmin;
|
final bool? isAdmin;
|
||||||
final ItemDetailObject? items;
|
final ItemDetailObject? items;
|
||||||
|
|
||||||
const ItemsTransferScreen({
|
const ItemsTransferScreen({
|
||||||
super.key,
|
super.key,
|
||||||
this.isAdmin,
|
this.isAdmin,
|
||||||
@@ -85,7 +88,12 @@ class _ItemsTransferScreenState extends State<ItemsTransferScreen> {
|
|||||||
child: Scaffold(
|
child: Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
titleSpacing: -10,
|
titleSpacing: -10,
|
||||||
title: Text('Item Details', style: TextStyle(color: Colors.white,),),
|
title: Text(
|
||||||
|
'Item Details',
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.white,
|
||||||
|
),
|
||||||
|
),
|
||||||
backgroundColor: Colors.black,
|
backgroundColor: Colors.black,
|
||||||
leading: IconButton(
|
leading: IconButton(
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
@@ -192,7 +200,7 @@ class _ItemsTransferScreenState extends State<ItemsTransferScreen> {
|
|||||||
),
|
),
|
||||||
content: SizedBox(
|
content: SizedBox(
|
||||||
width: _deviceBlockSize,
|
width: _deviceBlockSize,
|
||||||
height: 300,
|
height: 320,
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
@@ -228,27 +236,45 @@ class _ItemsTransferScreenState extends State<ItemsTransferScreen> {
|
|||||||
SizedBox(
|
SizedBox(
|
||||||
height: 20.0,
|
height: 20.0,
|
||||||
),
|
),
|
||||||
TransferDestroyButton(
|
Consumer<MyItemProvider>(
|
||||||
deviceBlockSize: _deviceBlockSize,
|
builder:
|
||||||
firstColor: kDarkBlue,
|
(context, myItemProvider, _) {
|
||||||
secondColor: kDarkBlueSub,
|
return TransferDestroyButton(
|
||||||
onTap: () {
|
deviceBlockSize:
|
||||||
Provider.of<MyItemProvider>(
|
_deviceBlockSize,
|
||||||
context,
|
firstColor: kDarkBlue,
|
||||||
listen: false,
|
secondColor: kDarkBlueSub,
|
||||||
).transferItems(
|
onTap: () async {
|
||||||
itemData!.id,
|
myItemProvider
|
||||||
Provider.of<UsersProvider>(
|
.setLoadingButton();
|
||||||
context,
|
await Provider.of<
|
||||||
listen: false)
|
MyItemProvider>(
|
||||||
.saveUserId!,
|
context,
|
||||||
|
listen: false,
|
||||||
|
).transferItems(
|
||||||
|
itemData!.id,
|
||||||
|
await Provider.of<
|
||||||
|
UsersProvider>(
|
||||||
|
context,
|
||||||
|
listen: false)
|
||||||
|
.saveUserId!,
|
||||||
|
);
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
myItemProvider
|
||||||
|
.resetLoadingButton();
|
||||||
|
Fluttertoast.showToast(
|
||||||
|
msg: "The item is transferred.",
|
||||||
|
toastLength: Toast.LENGTH_SHORT,
|
||||||
|
gravity: ToastGravity.BOTTOM,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
text: 'Transfer',
|
||||||
|
isLoadingButton: myItemProvider
|
||||||
|
.isloadingButton,
|
||||||
);
|
);
|
||||||
Navigator.of(context).pop();
|
|
||||||
Navigator.of(context)
|
|
||||||
.popAndPushNamed(Routes
|
|
||||||
.myItemsResultScreen);
|
|
||||||
},
|
},
|
||||||
text: 'Transfer',
|
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: 5.0,
|
height: 5.0,
|
||||||
|
|||||||
@@ -256,6 +256,17 @@ class MyItemProvider extends ChangeNotifier {
|
|||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
bool isloadingButton = false;
|
||||||
|
void resetLoadingButton() {
|
||||||
|
isloadingButton = false;
|
||||||
|
notifyListeners();
|
||||||
|
}
|
||||||
|
|
||||||
|
void setLoadingButton() {
|
||||||
|
isloadingButton = true;
|
||||||
|
notifyListeners();
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> transferItems(String itemId, String userId) async {
|
Future<void> transferItems(String itemId, String userId) async {
|
||||||
var response = await http.post(
|
var response = await http.post(
|
||||||
Uri.parse(Url.transferItems(itemId)),
|
Uri.parse(Url.transferItems(itemId)),
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import 'package:cssd/providers/my_items.dart';
|
|||||||
import 'package:cssd/widgets/MyItemsScreens/Detail/cancel_transfer_button.dart';
|
import 'package:cssd/widgets/MyItemsScreens/Detail/cancel_transfer_button.dart';
|
||||||
import 'package:cssd/widgets/MyItemsScreens/Detail/transfer_destroy_button.dart';
|
import 'package:cssd/widgets/MyItemsScreens/Detail/transfer_destroy_button.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:fluttertoast/fluttertoast.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:pinch_zoom/pinch_zoom.dart';
|
import 'package:pinch_zoom/pinch_zoom.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
@@ -466,25 +467,39 @@ class MyItemsDetailsDataBox extends StatelessWidget {
|
|||||||
SizedBox(
|
SizedBox(
|
||||||
height: 20.0,
|
height: 20.0,
|
||||||
),
|
),
|
||||||
TransferDestroyButton(
|
Consumer<ItemProvider>(
|
||||||
deviceBlockSize: _deviceBlockSize,
|
builder: (context, itemProvider, child) {
|
||||||
firstColor: kPink,
|
return TransferDestroyButton(
|
||||||
secondColor: kPinkSub,
|
deviceBlockSize: _deviceBlockSize,
|
||||||
onTap: () {
|
firstColor: kPink,
|
||||||
Provider.of<ItemProvider>(context,
|
secondColor: kPinkSub,
|
||||||
listen: false)
|
isLoadingButton:
|
||||||
.removeItems(datas.id)
|
itemProvider.isloadingButton,
|
||||||
.then(
|
onTap: () async {
|
||||||
(value) {
|
itemProvider.setLoadingButton();
|
||||||
Navigator.of(context).pop();
|
await Provider.of<ItemProvider>(context,
|
||||||
Navigator.pushReplacementNamed(
|
listen: false)
|
||||||
context,
|
.removeItems(datas.id)
|
||||||
Routes.myItemsResultScreen,
|
.then(
|
||||||
|
(value) {
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
Navigator.pushReplacementNamed(
|
||||||
|
context,
|
||||||
|
Routes.myItemsResultScreen,
|
||||||
|
);
|
||||||
|
itemProvider.resetLoadingButton();
|
||||||
|
Fluttertoast.showToast(
|
||||||
|
msg: "The item is destroyed.",
|
||||||
|
toastLength: Toast.LENGTH_SHORT,
|
||||||
|
gravity: ToastGravity.BOTTOM,
|
||||||
|
);
|
||||||
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
text: 'Destroy',
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
text: 'Destroy',
|
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: 5.0,
|
height: 5.0,
|
||||||
@@ -603,7 +618,7 @@ class MyItemsDetailsDataBox extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
content: SizedBox(
|
content: SizedBox(
|
||||||
width: _deviceBlockSize,
|
width: _deviceBlockSize,
|
||||||
height: 220,
|
height: 240,
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
@@ -619,25 +634,34 @@ class MyItemsDetailsDataBox extends StatelessWidget {
|
|||||||
SizedBox(
|
SizedBox(
|
||||||
height: 20.0,
|
height: 20.0,
|
||||||
),
|
),
|
||||||
TransferDestroyButton(
|
Consumer<ItemProvider>(
|
||||||
deviceBlockSize: _deviceBlockSize,
|
builder: (context, itemProvider, child) {
|
||||||
firstColor: Colors.black,
|
return TransferDestroyButton(
|
||||||
secondColor: Colors.black87,
|
deviceBlockSize: _deviceBlockSize,
|
||||||
onTap: () {
|
firstColor: Colors.black,
|
||||||
Provider.of<MyItemProvider>(context,
|
secondColor: Colors.black87,
|
||||||
listen: false)
|
isLoadingButton: itemProvider.isloadingButton,
|
||||||
.repairItems(datas.id, 'approved')
|
onTap: () async {
|
||||||
.then(
|
itemProvider.setLoadingButton();
|
||||||
(value) {
|
await Provider.of<MyItemProvider>(context,
|
||||||
Navigator.of(context).pop();
|
listen: false)
|
||||||
Navigator.pushReplacementNamed(
|
.repairItems(datas.id, 'approved')
|
||||||
context,
|
.then(
|
||||||
Routes.myItemsResultScreen,
|
(value) {
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
itemProvider.resetLoadingButton();
|
||||||
|
Fluttertoast.showToast(
|
||||||
|
msg: "The item is repaired.",
|
||||||
|
toastLength: Toast.LENGTH_SHORT,
|
||||||
|
gravity: ToastGravity.BOTTOM,
|
||||||
|
);
|
||||||
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
text: 'Repair',
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
text: 'Repair',
|
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: 5.0,
|
height: 5.0,
|
||||||
@@ -824,7 +848,7 @@ class MyItemsDetailsDataBox extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
Container(
|
Container(
|
||||||
width: 30 * _deviceBlockSize,
|
width: 40 * _deviceBlockSize,
|
||||||
child: Row(
|
child: Row(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Text(
|
Text(
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ class TransferDestroyButton extends StatelessWidget {
|
|||||||
required this.onTap,
|
required this.onTap,
|
||||||
required this.text,
|
required this.text,
|
||||||
this.fontSize = 5.0,
|
this.fontSize = 5.0,
|
||||||
|
this.isLoadingButton = false,
|
||||||
}) : _deviceBlockSize = deviceBlockSize,
|
}) : _deviceBlockSize = deviceBlockSize,
|
||||||
super(key: key);
|
super(key: key);
|
||||||
final double _deviceBlockSize;
|
final double _deviceBlockSize;
|
||||||
@@ -17,6 +18,7 @@ class TransferDestroyButton extends StatelessWidget {
|
|||||||
final String text;
|
final String text;
|
||||||
final VoidCallback onTap;
|
final VoidCallback onTap;
|
||||||
final double fontSize;
|
final double fontSize;
|
||||||
|
final bool isLoadingButton;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@@ -33,16 +35,22 @@ class TransferDestroyButton extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
borderRadius: BorderRadius.circular(7),
|
borderRadius: BorderRadius.circular(7),
|
||||||
),
|
),
|
||||||
child: Align(
|
child: isLoadingButton
|
||||||
alignment: Alignment.center,
|
? Center(
|
||||||
child: Text(
|
child: CircularProgressIndicator(
|
||||||
text,
|
color: Colors.white,
|
||||||
style: TextStyle(
|
),
|
||||||
color: Colors.white,
|
)
|
||||||
fontSize: fontSize * _deviceBlockSize,
|
: Align(
|
||||||
),
|
alignment: Alignment.center,
|
||||||
),
|
child: Text(
|
||||||
),
|
text,
|
||||||
|
style: TextStyle(
|
||||||
|
color: Colors.white,
|
||||||
|
fontSize: fontSize * _deviceBlockSize,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user