|
|
|
|
@ -1,7 +1,14 @@
|
|
|
|
|
import 'dart:collection';
|
|
|
|
|
|
|
|
|
|
import 'package:flutter/cupertino.dart';
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/api/worklist/worklist_api_client.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/classes/colors.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/classes/utils.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/models/worklist/replacement_list_model.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/ui/work_list/sheets/search_options_sheet.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/ui/work_list/sheets/selected_item_sheet.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/widgets/bottom_sheet.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
|
|
|
|
|
@ -10,21 +17,91 @@ import 'package:mohem_flutter_app/widgets/input_widget.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/widgets/radio/show_radio.dart';
|
|
|
|
|
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
|
|
|
|
|
|
|
|
|
|
class DelegateSheet extends StatelessWidget {
|
|
|
|
|
import '../../../models/generic_response_model.dart';
|
|
|
|
|
import '../../../models/get_action_history_list_model.dart';
|
|
|
|
|
import '../../../models/worklist/get_favorite_replacements_model.dart';
|
|
|
|
|
|
|
|
|
|
class DelegateSheet extends StatefulWidget {
|
|
|
|
|
int? notificationID;
|
|
|
|
|
List<GetActionHistoryList>? actionHistoryList;
|
|
|
|
|
|
|
|
|
|
DelegateSheet({this.notificationID, this.actionHistoryList});
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
State<DelegateSheet> createState() => _DelegateSheetState();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class _DelegateSheetState extends State<DelegateSheet> {
|
|
|
|
|
TextEditingController username = TextEditingController();
|
|
|
|
|
|
|
|
|
|
bool isNeedEnableTextField = false;
|
|
|
|
|
String? selectedFavLetter;
|
|
|
|
|
String selectedType = "Workflow";
|
|
|
|
|
String inputRes = "";
|
|
|
|
|
List<String>? favLetters;
|
|
|
|
|
List<GetFavoriteReplacements>? favUsersList;
|
|
|
|
|
List<ReplacementList>? replacementList;
|
|
|
|
|
|
|
|
|
|
Future fetchFavLetters({bool isNeedLoading = true}) async {
|
|
|
|
|
favLetters = [];
|
|
|
|
|
if (isNeedLoading) Utils.showLoading(context);
|
|
|
|
|
List<GetFavoriteReplacements>? favList = await WorkListApiClient().getFavoriteReplacementWithoutImage();
|
|
|
|
|
List<String> result = [];
|
|
|
|
|
favList!.forEach((element) {
|
|
|
|
|
result.add(element.employeeDisplayName![0]);
|
|
|
|
|
});
|
|
|
|
|
favLetters = LinkedHashSet<String>.from(result).toList();
|
|
|
|
|
if (isNeedLoading) Utils.hideLoading(context);
|
|
|
|
|
setState(() {
|
|
|
|
|
favLetters!.sort((a, b) {
|
|
|
|
|
return a.toLowerCase().compareTo(b.toLowerCase());
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future fetchFavUsersList({bool isNeedLoading = true}) async {
|
|
|
|
|
if (isNeedLoading) Utils.showLoading(context);
|
|
|
|
|
favUsersList = await WorkListApiClient().getFavoriteReplacementWithImage(selectedFavLetter ?? "");
|
|
|
|
|
if (isNeedLoading) Utils.hideLoading(context);
|
|
|
|
|
setState(() {});
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fetchChangeFav({required String email, required String employeName, required String image, required String userName, bool isFav = false, bool isNeedToRefresh = false}) async {
|
|
|
|
|
Utils.showLoading(context);
|
|
|
|
|
favLetters = null;
|
|
|
|
|
selectedFavLetter = null;
|
|
|
|
|
GenericResponseModel model = await WorkListApiClient().changeFavoriteReplacements(
|
|
|
|
|
email: email,
|
|
|
|
|
employeName: employeName,
|
|
|
|
|
image: image,
|
|
|
|
|
userName: userName,
|
|
|
|
|
isFav: isFav,
|
|
|
|
|
);
|
|
|
|
|
if (isNeedToRefresh) {
|
|
|
|
|
await fetchFavLetters(isNeedLoading: false);
|
|
|
|
|
if (favLetters != null) await fetchFavUsersList(isNeedLoading: false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Utils.hideLoading(context);
|
|
|
|
|
setState(() {});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future fetchUserByInput({bool isNeedLoading = true}) async {
|
|
|
|
|
if (isNeedLoading) Utils.showLoading(context);
|
|
|
|
|
replacementList = await WorkListApiClient().searchUserByInput(
|
|
|
|
|
userId: selectedType == "Employee ID" ? inputRes : "",
|
|
|
|
|
userName: selectedType == "Employee Name" ? inputRes : "",
|
|
|
|
|
email: selectedType == "Employee Email" ? inputRes : "",
|
|
|
|
|
);
|
|
|
|
|
if (isNeedLoading) Utils.hideLoading(context);
|
|
|
|
|
setState(() {});
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
|
List<String> related = [
|
|
|
|
|
"Amjad Khan",
|
|
|
|
|
"Munahi Nasser",
|
|
|
|
|
];
|
|
|
|
|
List<String> favorites = [
|
|
|
|
|
"Amjad Khan",
|
|
|
|
|
"Muhammad Ahmed",
|
|
|
|
|
"Majid Ali",
|
|
|
|
|
"Faris Mahmoud",
|
|
|
|
|
];
|
|
|
|
|
return Container(
|
|
|
|
|
width: double.infinity,
|
|
|
|
|
height: MediaQuery.of(context).size.height - 80,
|
|
|
|
|
@ -40,43 +117,156 @@ class DelegateSheet extends StatelessWidget {
|
|
|
|
|
"Delegate".toText24(),
|
|
|
|
|
24.height,
|
|
|
|
|
"Search".toText16(),
|
|
|
|
|
12.height,
|
|
|
|
|
Row(
|
|
|
|
|
20.height,
|
|
|
|
|
Column(
|
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.end,
|
|
|
|
|
children: [
|
|
|
|
|
Expanded(
|
|
|
|
|
flex: 2,
|
|
|
|
|
child: ShowRadio(
|
|
|
|
|
title: "Name", value: "Name", groupValue: "Name"),
|
|
|
|
|
Container(
|
|
|
|
|
padding: EdgeInsets.only(left: 8, right: 4, top: 6, bottom: 6),
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
borderRadius: BorderRadius.circular(15),
|
|
|
|
|
color: Colors.transparent,
|
|
|
|
|
border: Border.all(
|
|
|
|
|
color: Color(0xffefefef),
|
|
|
|
|
width: 1,
|
|
|
|
|
),
|
|
|
|
|
Expanded(
|
|
|
|
|
flex: 3,
|
|
|
|
|
child: ShowRadio(
|
|
|
|
|
title: "User Name",
|
|
|
|
|
value: "User Name",
|
|
|
|
|
groupValue: "Name"),
|
|
|
|
|
),
|
|
|
|
|
child: Row(
|
|
|
|
|
children: [
|
|
|
|
|
Expanded(
|
|
|
|
|
flex: 2,
|
|
|
|
|
child: ShowRadio(
|
|
|
|
|
title: "Email",
|
|
|
|
|
value: "Email",
|
|
|
|
|
groupValue: "Name"),
|
|
|
|
|
child: InputWidget(
|
|
|
|
|
"Search By " + selectedType,
|
|
|
|
|
"",
|
|
|
|
|
username,
|
|
|
|
|
isEnableBorder: false,
|
|
|
|
|
horizontalPadding: 4,
|
|
|
|
|
verticalPadding: 3,
|
|
|
|
|
isInputTypeNum: selectedType == "Employee ID" ? true : false,
|
|
|
|
|
isEnable: isNeedEnableTextField,
|
|
|
|
|
onChange: (v) {
|
|
|
|
|
inputRes = v;
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
Container(
|
|
|
|
|
height: 24,
|
|
|
|
|
width: 1,
|
|
|
|
|
color: Color(0xffE5E5E5),
|
|
|
|
|
),
|
|
|
|
|
Container(
|
|
|
|
|
padding: EdgeInsets.all(8),
|
|
|
|
|
child: Row(
|
|
|
|
|
children: [
|
|
|
|
|
Text(
|
|
|
|
|
selectedType,
|
|
|
|
|
style: const TextStyle(
|
|
|
|
|
fontSize: 11,
|
|
|
|
|
fontWeight: FontWeight.w600,
|
|
|
|
|
color: Color(0xff2B353E),
|
|
|
|
|
letterSpacing: -0.44,
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
4.width,
|
|
|
|
|
Icon(
|
|
|
|
|
Icons.keyboard_arrow_down,
|
|
|
|
|
color: Colors.black,
|
|
|
|
|
size: 16,
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
20.height,
|
|
|
|
|
InputWidget(
|
|
|
|
|
"Search By Username",
|
|
|
|
|
"",
|
|
|
|
|
username,
|
|
|
|
|
isBackgroundEnable: true,
|
|
|
|
|
).onPress(() {
|
|
|
|
|
showMyBottomSheet(
|
|
|
|
|
context,
|
|
|
|
|
child: SearchOptionsSheet(
|
|
|
|
|
selectedType,
|
|
|
|
|
onSelection: (String value) {
|
|
|
|
|
selectedType = value;
|
|
|
|
|
if (value == "Workflow") {
|
|
|
|
|
setState(() {
|
|
|
|
|
isNeedEnableTextField = false;
|
|
|
|
|
selectedFavLetter = null;
|
|
|
|
|
favLetters = null;
|
|
|
|
|
favUsersList = null;
|
|
|
|
|
});
|
|
|
|
|
} else if (value == "Favorites") {
|
|
|
|
|
isNeedEnableTextField = false;
|
|
|
|
|
fetchFavLetters();
|
|
|
|
|
} else {
|
|
|
|
|
setState(() {
|
|
|
|
|
isNeedEnableTextField = true;
|
|
|
|
|
selectedFavLetter = null;
|
|
|
|
|
favLetters = null;
|
|
|
|
|
favUsersList = null;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
24.height,
|
|
|
|
|
"Related".toText16(),
|
|
|
|
|
12.height,
|
|
|
|
|
ListView.separated(
|
|
|
|
|
);
|
|
|
|
|
}),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
if (isNeedEnableTextField)
|
|
|
|
|
FlatButton(
|
|
|
|
|
onPressed: () {
|
|
|
|
|
fetchUserByInput();
|
|
|
|
|
},
|
|
|
|
|
child: Text(
|
|
|
|
|
"Search",
|
|
|
|
|
style: TextStyle(
|
|
|
|
|
color: Colors.blue,
|
|
|
|
|
decoration: TextDecoration.underline,
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
)
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
if (!isNeedEnableTextField) 12.height,
|
|
|
|
|
Row(
|
|
|
|
|
children: [
|
|
|
|
|
Expanded(
|
|
|
|
|
child: Container(
|
|
|
|
|
width: double.infinity,
|
|
|
|
|
child: selectedFavLetter == null && favLetters != null
|
|
|
|
|
? Container(
|
|
|
|
|
width: double.infinity,
|
|
|
|
|
alignment: Alignment.center,
|
|
|
|
|
child: "Please select letter to see Fav results".toText12(),
|
|
|
|
|
)
|
|
|
|
|
: favUsersList != null
|
|
|
|
|
? ListView.separated(
|
|
|
|
|
itemBuilder: (context, index) {
|
|
|
|
|
return showFavUserItem(favUsersList![index]);
|
|
|
|
|
},
|
|
|
|
|
separatorBuilder: (context, index) {
|
|
|
|
|
return Container(
|
|
|
|
|
color: MyColors.borderColor,
|
|
|
|
|
width: double.infinity,
|
|
|
|
|
height: 1,
|
|
|
|
|
margin: EdgeInsets.only(top: 8, bottom: 8),
|
|
|
|
|
).onPress(() {});
|
|
|
|
|
},
|
|
|
|
|
physics: NeverScrollableScrollPhysics(),
|
|
|
|
|
shrinkWrap: true,
|
|
|
|
|
itemCount: favUsersList!.length,
|
|
|
|
|
padding: EdgeInsets.only(top: 8, bottom: 8),
|
|
|
|
|
)
|
|
|
|
|
: isNeedEnableTextField && replacementList == null
|
|
|
|
|
? Container(
|
|
|
|
|
width: double.infinity,
|
|
|
|
|
alignment: Alignment.center,
|
|
|
|
|
child: "Search User".toText12(),
|
|
|
|
|
)
|
|
|
|
|
: isNeedEnableTextField && replacementList!.length == 0
|
|
|
|
|
? Container(
|
|
|
|
|
width: double.infinity,
|
|
|
|
|
alignment: Alignment.center,
|
|
|
|
|
child: "No Data Found".toText12(),
|
|
|
|
|
)
|
|
|
|
|
: isNeedEnableTextField
|
|
|
|
|
? ListView.separated(
|
|
|
|
|
itemBuilder: (context, index) {
|
|
|
|
|
return showItem(context, related[index]);
|
|
|
|
|
return showInputUserItem(replacementList![index]);
|
|
|
|
|
},
|
|
|
|
|
separatorBuilder: (context, index) {
|
|
|
|
|
return Container(
|
|
|
|
|
@ -88,16 +278,12 @@ class DelegateSheet extends StatelessWidget {
|
|
|
|
|
},
|
|
|
|
|
physics: NeverScrollableScrollPhysics(),
|
|
|
|
|
shrinkWrap: true,
|
|
|
|
|
itemCount: related.length,
|
|
|
|
|
itemCount: replacementList!.length,
|
|
|
|
|
padding: EdgeInsets.only(top: 8, bottom: 8),
|
|
|
|
|
),
|
|
|
|
|
24.height,
|
|
|
|
|
"Favorites".toText16(),
|
|
|
|
|
12.height,
|
|
|
|
|
ListView.separated(
|
|
|
|
|
)
|
|
|
|
|
: ListView.separated(
|
|
|
|
|
itemBuilder: (context, index) {
|
|
|
|
|
return showItem(context, favorites[index],
|
|
|
|
|
isEnabled: true);
|
|
|
|
|
return showItem(widget.actionHistoryList![index]);
|
|
|
|
|
},
|
|
|
|
|
separatorBuilder: (context, index) {
|
|
|
|
|
return Container(
|
|
|
|
|
@ -109,9 +295,38 @@ class DelegateSheet extends StatelessWidget {
|
|
|
|
|
},
|
|
|
|
|
physics: NeverScrollableScrollPhysics(),
|
|
|
|
|
shrinkWrap: true,
|
|
|
|
|
itemCount: favorites.length,
|
|
|
|
|
itemCount: widget.actionHistoryList!.length,
|
|
|
|
|
padding: EdgeInsets.only(top: 8, bottom: 8),
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
if (favLetters != null)
|
|
|
|
|
Container(
|
|
|
|
|
width: 30,
|
|
|
|
|
// color: Colors.red,
|
|
|
|
|
child: ListView.separated(
|
|
|
|
|
itemBuilder: (context, index) {
|
|
|
|
|
return Container(
|
|
|
|
|
padding: EdgeInsets.all(8),
|
|
|
|
|
alignment: Alignment.center,
|
|
|
|
|
child: favLetters![index].toText14(color: selectedFavLetter == favLetters![index] ? MyColors.gradiantStartColor : Colors.black),
|
|
|
|
|
).onPress(() {
|
|
|
|
|
selectedFavLetter = favLetters![index].toUpperCase();
|
|
|
|
|
fetchFavUsersList();
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
separatorBuilder: (context, index) {
|
|
|
|
|
return SizedBox(
|
|
|
|
|
height: 0,
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
physics: NeverScrollableScrollPhysics(),
|
|
|
|
|
shrinkWrap: true,
|
|
|
|
|
itemCount: favLetters!.length,
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
@ -138,26 +353,134 @@ class DelegateSheet extends StatelessWidget {
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Widget showItem(BuildContext context, String name, {bool isEnabled = false}) {
|
|
|
|
|
Widget showItem(GetActionHistoryList actionHistory) {
|
|
|
|
|
return InkWell(
|
|
|
|
|
onTap: () {
|
|
|
|
|
showMyBottomSheet(context, child: SelectedItemSheet("Delegate"));
|
|
|
|
|
showMyBottomSheet(context,
|
|
|
|
|
child: SelectedItemSheet(
|
|
|
|
|
"Comment",
|
|
|
|
|
actionHistoryList: actionHistory,
|
|
|
|
|
notificationID: widget.notificationID,
|
|
|
|
|
));
|
|
|
|
|
},
|
|
|
|
|
child: Row(
|
|
|
|
|
children: [
|
|
|
|
|
CircularAvatar(
|
|
|
|
|
url: actionHistory.eMPLOYEEIMAGE ?? "",
|
|
|
|
|
height: 30,
|
|
|
|
|
width: 30,
|
|
|
|
|
isImageBase64: true,
|
|
|
|
|
),
|
|
|
|
|
16.width,
|
|
|
|
|
Expanded(
|
|
|
|
|
child: name.toText12(),
|
|
|
|
|
child: (actionHistory.nAME ?? "").toText12(),
|
|
|
|
|
),
|
|
|
|
|
Icon(
|
|
|
|
|
IconButton(
|
|
|
|
|
onPressed: () {
|
|
|
|
|
actionHistory.isFavorite = true;
|
|
|
|
|
fetchChangeFav(
|
|
|
|
|
email: actionHistory.eMAILADDRESS ?? "",
|
|
|
|
|
employeName: actionHistory.nAME ?? "",
|
|
|
|
|
image: actionHistory.eMPLOYEEIMAGE ?? "",
|
|
|
|
|
userName: actionHistory.uSERNAME ?? "",
|
|
|
|
|
isFav: true,
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
icon: Icon(
|
|
|
|
|
Icons.star,
|
|
|
|
|
size: 16,
|
|
|
|
|
color: (actionHistory.isFavorite ?? false) ? MyColors.yellowColor : MyColors.borderColor,
|
|
|
|
|
),
|
|
|
|
|
)
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Widget showFavUserItem(GetFavoriteReplacements actionHistory) {
|
|
|
|
|
return InkWell(
|
|
|
|
|
onTap: () {
|
|
|
|
|
showMyBottomSheet(context,
|
|
|
|
|
child: SelectedItemSheet(
|
|
|
|
|
"Comment",
|
|
|
|
|
favoriteReplacements: actionHistory,
|
|
|
|
|
notificationID: widget.notificationID,
|
|
|
|
|
));
|
|
|
|
|
},
|
|
|
|
|
child: Row(
|
|
|
|
|
children: [
|
|
|
|
|
CircularAvatar(
|
|
|
|
|
url: actionHistory.employeeImage ?? "",
|
|
|
|
|
height: 30,
|
|
|
|
|
width: 30,
|
|
|
|
|
isImageBase64: true,
|
|
|
|
|
),
|
|
|
|
|
16.width,
|
|
|
|
|
Expanded(
|
|
|
|
|
child: (actionHistory.employeeDisplayName ?? "").toText12(),
|
|
|
|
|
),
|
|
|
|
|
IconButton(
|
|
|
|
|
onPressed: () {
|
|
|
|
|
fetchChangeFav(
|
|
|
|
|
email: actionHistory.emailAddress ?? "",
|
|
|
|
|
employeName: actionHistory.employeeDisplayName ?? "",
|
|
|
|
|
image: actionHistory.employeeImage ?? "",
|
|
|
|
|
userName: actionHistory.userName ?? "",
|
|
|
|
|
isFav: false,
|
|
|
|
|
isNeedToRefresh: true,
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
icon: Icon(
|
|
|
|
|
Icons.star,
|
|
|
|
|
size: 16,
|
|
|
|
|
color: MyColors.yellowColor,
|
|
|
|
|
),
|
|
|
|
|
)
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Widget showInputUserItem(ReplacementList actionHistory) {
|
|
|
|
|
return InkWell(
|
|
|
|
|
onTap: () {
|
|
|
|
|
showMyBottomSheet(context,
|
|
|
|
|
child: SelectedItemSheet(
|
|
|
|
|
"Comment",
|
|
|
|
|
replacementList: actionHistory,
|
|
|
|
|
notificationID: widget.notificationID,
|
|
|
|
|
));
|
|
|
|
|
},
|
|
|
|
|
child: Row(
|
|
|
|
|
children: [
|
|
|
|
|
CircularAvatar(
|
|
|
|
|
url: actionHistory.employeeImage ?? "",
|
|
|
|
|
height: 30,
|
|
|
|
|
width: 30,
|
|
|
|
|
isImageBase64: true,
|
|
|
|
|
),
|
|
|
|
|
16.width,
|
|
|
|
|
Expanded(
|
|
|
|
|
child: (actionHistory.employeeDisplayName ?? "").toText12(),
|
|
|
|
|
),
|
|
|
|
|
IconButton(
|
|
|
|
|
onPressed: () {
|
|
|
|
|
actionHistory.isFavorite = !(actionHistory.isFavorite ?? false);
|
|
|
|
|
fetchChangeFav(
|
|
|
|
|
email: actionHistory.emailAddress ?? "",
|
|
|
|
|
employeName: actionHistory.employeeDisplayName ?? "",
|
|
|
|
|
image: actionHistory.employeeImage ?? "",
|
|
|
|
|
userName: actionHistory.userName ?? "",
|
|
|
|
|
isFav: false,
|
|
|
|
|
isNeedToRefresh: false,
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
icon: Icon(
|
|
|
|
|
Icons.star,
|
|
|
|
|
size: 16,
|
|
|
|
|
color: isEnabled ? MyColors.yellowColor : MyColors.borderColor,
|
|
|
|
|
color: (actionHistory.isFavorite ?? false) ? MyColors.yellowColor : MyColors.borderColor,
|
|
|
|
|
),
|
|
|
|
|
)
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
|