improvements.

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

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

Loading…
Cancel
Save