Aidra Connect 10.0.2+16
Aidra Connect Mobile Application
Loading...
Searching...
No Matches
documents_listview.dart
Go to the documentation of this file.
1import 'package:connect/core/localization/app_localizations.dart';
2import 'package:connect/features/account/screens/cubit/document_cubit/document_cubit.dart';
3import 'package:connect/features/account/screens/profile_screen/widgets/documents_button.dart';
4import 'package:flutter/material.dart';
5import 'package:flutter_bloc/flutter_bloc.dart';
6import 'package:flutter_screenutil/flutter_screenutil.dart';
7
8import '../../../../../core/ui/theme/color_palette.dart';
9import '../../../../../core/ui/widgets/custom_snackbar.dart';
10
11class DocumentsListView extends StatelessWidget {
12 const DocumentsListView({super.key});
13
14 @override
15 Widget build(BuildContext context) {
16 return BlocConsumer<DocumentCubit, DocumentState>(
17 listener: (context, state) {
18 if (state is DocumentLoadingFailureState) {
20 context,
22 AppLocalizations.of(context)
23 .translate('Failed to load profile documents'),
24 );
25 }
26 },
27 builder: (context, state) {
28 if (state is DocumentLoadedState) {
29 return state.documents.isEmpty
30 ? SizedBox()
31 : Container(
32 decoration: BoxDecoration(
33 color: Theme.of(context).colorScheme.surface,
34 borderRadius: BorderRadius.circular(10),
35 ),
36 child: Column(
37 crossAxisAlignment: CrossAxisAlignment.start,
38 children: [
39 Padding(
40 padding: EdgeInsets.symmetric(
41 horizontal: 16.sp, vertical: 12.sp),
42 child: Text(
43 AppLocalizations.of(context)
44 .translate('Your Documents'),
45 style: Theme.of(context).textTheme.bodySmall,
46 ),
47 ),
48 Padding(
49 padding: EdgeInsets.symmetric(horizontal: 16.sp),
50 child: GridView.builder(
51 shrinkWrap: true,
52 physics: NeverScrollableScrollPhysics(),
53 gridDelegate:
54 SliverGridDelegateWithFixedCrossAxisCount(
55 crossAxisCount: 2,
56 crossAxisSpacing: 12.sp,
57 mainAxisSpacing: 12.sp,
58 childAspectRatio: 2.5,
59 ),
60 itemCount: state.documents.length,
61 itemBuilder: (BuildContext context, int index) {
62 return DocumentsButton(
63 document: state.documents[index],
64 );
65 },
66 ),
67 ),
68 SizedBox(height: 20.sp),
69 ],
70 ),
71 );
72 } else if (state is LoadingDocumentState) {
73 return Padding(
74 padding: EdgeInsets.symmetric(vertical: 20.sp),
75 child: Center(
76 child: SizedBox(
77 height: 24.sp,
78 width: 24.sp,
79 child: CircularProgressIndicator(
80 strokeWidth: 2.sp,
81 ),
82 ),
83 ),
84 );
85 } else {
86 return SizedBox();
87 }
88 },
89 );
90 }
91}
String translate(String key)
static AppLocalizations of(BuildContext context)
static const red
static display(final BuildContext context, final Color color, final String message,)
const DocumentsListView({super.key})
final Widget child
override Widget build(BuildContext context)
const DocumentLoadingFailureState({required this.failure})