Files
cssd/lib/pages/MyItemsPages/Result/my_items_requests_screen.dart
T
2023-12-09 17:52:53 +03:30

124 lines
4.3 KiB
Dart
Executable File

// ignore_for_file: public_member_api_docs, sort_constructors_first
import 'package:cssd/config/routes.dart';
import 'package:cssd/providers/auth.dart';
import 'package:cssd/providers/connectivity.dart';
import 'package:cssd/providers/my_items.dart';
import 'package:cssd/widgets/CycleScreens/Result/banner.dart';
import 'package:cssd/widgets/Global/internet_error.dart';
import 'package:cssd/widgets/MyItemsScreens/Result/item_requests_data_box.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class MyItemsRequestsScreen extends StatefulWidget {
final bool? isAdmin;
const MyItemsRequestsScreen({
Key? key,
this.isAdmin,
}) : super(key: key);
@override
State<MyItemsRequestsScreen> createState() => _MyItemsRequestsScreenState();
}
class _MyItemsRequestsScreenState extends State<MyItemsRequestsScreen> {
bool _isInit = true;
ScrollController? sc;
@override
void initState() {
super.initState();
}
@override
void didChangeDependencies() {
if (_isInit) {
var itemResults = Provider.of<MyItemProvider>(context);
itemResults.setLoading();
itemResults.resetPageNumber();
itemResults.getMyItemRequests().then(
(_) {
itemResults.resetLoading();
sc?.addListener(
() {
if (sc!.position.pixels == sc!.position.maxScrollExtent) {
var itemResults = Provider.of<MyItemProvider>(
context,
listen: false,
);
itemResults.getMyItemRequests();
}
},
);
},
);
}
_isInit = false;
super.didChangeDependencies();
}
@override
Widget build(BuildContext context) {
final _media = MediaQuery.of(context);
final double _devicewidth = _media.size.width;
final double _deviceBlockSize = _devicewidth / 100;
final userData = Provider.of<Auth>(context, listen: false).user;
return Consumer<ConnectivityProvider>(
builder: (ct, connection, _) {
return connection.conStatus != 'offline'
? Padding(
padding: EdgeInsets.only(
top: 20,
right: 20,
bottom: 60,
left: 20,
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
ResultBanner(
deviceBlockSize: _deviceBlockSize,
text: 'My Requests',
hasFilterObject: false,
push: Routes.myItemsFilterScreen,
),
SizedBox(
height: 20,
),
Expanded(
child: Consumer<MyItemProvider>(
builder: (context, itemResults, _) {
return itemResults.isloading
? Center(
child: CircularProgressIndicator(
color: Colors.black,
),
)
: ListView.builder(
controller: sc,
itemBuilder: (context, index) {
return RequestsDataBox(
deviceBlockSize: _deviceBlockSize,
isAdmin:
userData['roles']?.contains('User')
? false
: true,
item: itemResults
.originalMyItemsRequests?[index],
);
},
itemCount: itemResults
.originalMyItemsRequests?.length,
shrinkWrap: true,
);
},
),
),
],
),
)
: ConnectionErrorBox();
},
);
}
}