improvements.

main_design2.1
Sikander Saleem 12 months ago
parent e5a9417768
commit 7818269b93

@ -293,4 +293,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: 0e9d20dce82ccc5d44ed3f83729982dc68625efb PODFILE CHECKSUM: 0e9d20dce82ccc5d44ed3f83729982dc68625efb
COCOAPODS: 1.11.3 COCOAPODS: 1.12.0

@ -10,8 +10,7 @@ import 'package:test_sa/views/widgets/bottom_sheets/selection_bottom_sheet.dart'
import '../../models/base.dart'; import '../../models/base.dart';
import '../app_style/app_color.dart'; import '../app_style/app_color.dart';
class SingleItemDropDownMenu<T extends Base, X extends LoadingListNotifier> class SingleItemDropDownMenu<T extends Base, X extends LoadingListNotifier> extends StatefulWidget {
extends StatefulWidget {
final BuildContext context; final BuildContext context;
final Function(T) onSelect; final Function(T) onSelect;
final T initialValue; final T initialValue;
@ -38,12 +37,10 @@ class SingleItemDropDownMenu<T extends Base, X extends LoadingListNotifier>
}) : super(key: key); }) : super(key: key);
@override @override
State<SingleItemDropDownMenu<T, X>> createState() => State<SingleItemDropDownMenu<T, X>> createState() => _SingleItemDropDownMenuState<T, X>();
_SingleItemDropDownMenuState<T, X>();
} }
class _SingleItemDropDownMenuState<T extends Base, class _SingleItemDropDownMenuState<T extends Base, X extends LoadingListNotifier> extends State<SingleItemDropDownMenu<T, X>> {
X extends LoadingListNotifier> extends State<SingleItemDropDownMenu<T, X>> {
T _selectedItem; T _selectedItem;
X provider; X provider;
@ -53,15 +50,11 @@ class _SingleItemDropDownMenuState<T extends Base,
provider = Provider.of<X>(widget.context); provider = Provider.of<X>(widget.context);
} }
if (widget.initialValue != null) { if (widget.initialValue != null) {
final result = final result = (X == NullableLoadingProvider ? widget.staticData : provider.items)?.where((element) {
(X == NullableLoadingProvider ? widget.staticData : provider.items)
?.where((element) {
return element.identifier == widget.initialValue.identifier; return element.identifier == widget.initialValue.identifier;
}); });
if (result?.isNotEmpty ?? false) _selectedItem = result.first; if (result?.isNotEmpty ?? false) _selectedItem = result.first;
if (widget.onSelect != null && if (widget.onSelect != null && (widget.initialValue?.identifier ?? "") != (_selectedItem?.identifier ?? "")) {
(widget.initialValue?.identifier ?? "") !=
(_selectedItem?.identifier ?? "")) {
widget.onSelect(_selectedItem); widget.onSelect(_selectedItem);
} }
} }
@ -76,9 +69,7 @@ class _SingleItemDropDownMenuState<T extends Base,
@override @override
void didUpdateWidget(covariant SingleItemDropDownMenu<T, X> oldWidget) { void didUpdateWidget(covariant SingleItemDropDownMenu<T, X> oldWidget) {
if (widget.initialValue != null) { if (widget.initialValue != null) {
final result = final result = (X == NullableLoadingProvider ? widget.staticData : provider.items)?.where((element) {
(X == NullableLoadingProvider ? widget.staticData : provider.items)
?.where((element) {
return element.identifier == widget.initialValue.identifier; return element.identifier == widget.initialValue.identifier;
}); });
if (result?.isNotEmpty ?? false) { if (result?.isNotEmpty ?? false) {
@ -86,9 +77,7 @@ class _SingleItemDropDownMenuState<T extends Base,
} else { } else {
_selectedItem = null; _selectedItem = null;
} }
if (widget.onSelect != null && if (widget.onSelect != null && (widget.initialValue?.identifier ?? "") != (_selectedItem?.identifier ?? "")) {
(widget.initialValue?.identifier ?? "") !=
(_selectedItem?.identifier ?? "")) {
widget.onSelect(_selectedItem); widget.onSelect(_selectedItem);
} }
} else { } else {
@ -99,15 +88,10 @@ class _SingleItemDropDownMenuState<T extends Base,
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
bool isEmpty = bool isEmpty = ((X == NullableLoadingProvider ? widget.staticData : provider.items)?.isEmpty ?? true);
((X == NullableLoadingProvider ? widget.staticData : provider.items)
?.isEmpty ??
true);
return AppLoadingManager( return AppLoadingManager(
isLoading: widget.loading ?? isLoading: widget.loading ?? ((X == NullableLoadingProvider) ? false : provider.loading),
((X == NullableLoadingProvider) ? false : provider.loading), isFailedLoading: (X == NullableLoadingProvider) ? false : provider.items == null,
isFailedLoading:
(X == NullableLoadingProvider) ? false : provider.items == null,
stateCode: (X == NullableLoadingProvider) ? 200 : provider.stateCode, stateCode: (X == NullableLoadingProvider) ? 200 : provider.stateCode,
onRefresh: () async { onRefresh: () async {
if (X != NullableLoadingProvider) { if (X != NullableLoadingProvider) {
@ -125,25 +109,19 @@ class _SingleItemDropDownMenuState<T extends Base,
? AppColor.neutral40 ? AppColor.neutral40
: widget.backgroundColor ?? AppColor.background(context), : widget.backgroundColor ?? AppColor.background(context),
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
boxShadow: [ boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)],
BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)
],
), ),
child: Stack( child: Stack(
alignment: Alignment.center, alignment: Alignment.center,
children: [ children: [
if (widget.enabled) if (widget.enabled) const PositionedDirectional(end: 0, child: Icon(Icons.keyboard_arrow_down_rounded)),
const PositionedDirectional(
end: 0, child: Icon(Icons.keyboard_arrow_down_rounded)),
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Text( Text(
widget.title, widget.title,
style: Theme.of(context).textTheme.bodySmall?.copyWith( style: Theme.of(context).textTheme.bodySmall?.copyWith(color: context.isDark ? null : AppColor.neutral20, fontWeight: FontWeight.w500),
color: context.isDark ? null : AppColor.neutral20,
fontWeight: FontWeight.w500),
), ),
DropdownButton<T>( DropdownButton<T>(
value: _selectedItem, value: _selectedItem,
@ -153,9 +131,7 @@ class _SingleItemDropDownMenuState<T extends Base,
elevation: 0, elevation: 0,
isExpanded: true, isExpanded: true,
hint: Text( hint: Text(
isEmpty || widget.enabled == false isEmpty || widget.enabled == false ? context.translation.noDataFound : context.translation.select,
? context.translation.noDataFound
: context.translation.select,
style: Theme.of(context).textTheme.bodyLarge, style: Theme.of(context).textTheme.bodyLarge,
), ),
style: TextStyle(color: Theme.of(context).primaryColor), style: TextStyle(color: Theme.of(context).primaryColor),
@ -169,10 +145,7 @@ class _SingleItemDropDownMenuState<T extends Base,
}); });
widget.onSelect(isNull ? null : newValue); widget.onSelect(isNull ? null : newValue);
}, },
items: ((X == NullableLoadingProvider) items: ((X == NullableLoadingProvider) ? widget.staticData : provider.items)?.map<DropdownMenuItem<T>>((value) {
? widget.staticData
: provider.items)
?.map<DropdownMenuItem<T>>((value) {
return DropdownMenuItem<T>( return DropdownMenuItem<T>(
value: value, value: value,
child: Text( child: Text(
@ -181,31 +154,29 @@ class _SingleItemDropDownMenuState<T extends Base,
), ),
); );
})?.toList(), })?.toList(),
).onPress(widget.showAsBottomSheet ? () async{ ).onPress(widget.showAsBottomSheet
? () async {
T _selectedT = (await showModalBottomSheet( T _selectedT = (await showModalBottomSheet(
context: context, context: context,
isScrollControlled: true, isScrollControlled: true,
shape: const RoundedRectangleBorder( shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.vertical( borderRadius: BorderRadius.vertical(
top: Radius.circular(20), top: Radius.circular(20),
), ),
), ),
clipBehavior: Clip.antiAliasWithSaveLayer, clipBehavior: Clip.antiAliasWithSaveLayer,
builder: (BuildContext context) => SelectionBottomSheet( builder: (BuildContext context) => SelectionBottomSheet(
items: ((X == NullableLoadingProvider) items: ((X == NullableLoadingProvider) ? widget.staticData : provider.items),
? widget.staticData selectedItem: _selectedItem,
: provider.items), title: widget.title,
selectedItem: _selectedItem, builderString: (emp) => emp?.name ?? "",
title: widget.title, ),
builderString: (emp) => emp?.name ?? "", )) as T;
), if (_selectedT != null) {
)) as T; widget.onSelect(_selectedT);
if(_selectedT !=null) { }
widget.onSelect(_selectedT); }
} : null),
} : null),
], ],
), ),
], ],

Loading…
Cancel
Save