TF-4195 Implement add a Label to an email

This commit is contained in:
dab246
2025-12-12 02:39:59 +07:00
committed by Dat H. Pham
parent 0d247b30d7
commit 78de7de3a6
18 changed files with 528 additions and 22 deletions
@@ -6,16 +6,20 @@ import 'package:flutter_svg/flutter_svg.dart';
import 'package:labels/extensions/label_extension.dart';
import 'package:labels/model/label.dart';
typedef OnSelectLabelAction = void Function(Label label, bool isSelected);
class LabelItemContextMenu extends StatelessWidget {
final Label label;
final ImagePaths imagePaths;
final bool isSelected;
final OnSelectLabelAction onSelectLabelAction;
const LabelItemContextMenu({
super.key,
required this.label,
required this.imagePaths,
required this.isSelected,
required this.onSelectLabelAction,
});
@override
@@ -23,7 +27,7 @@ class LabelItemContextMenu extends StatelessWidget {
return Material(
type: MaterialType.transparency,
child: InkWell(
onTap: () {},
onTap: () => onSelectLabelAction(label, !isSelected),
child: Container(
height: 48,
padding: const EdgeInsets.symmetric(horizontal: 10),
@@ -48,7 +52,7 @@ class LabelItemContextMenu extends StatelessWidget {
overflow: TextOverflow.ellipsis,
style: ThemeUtils.textStyleBodyBody3(color: Colors.black),
),
)
),
],
),
),
@@ -9,12 +9,14 @@ class LabelListContextMenu extends StatelessWidget {
final PresentationEmail presentationEmail;
final List<Label> labelList;
final ImagePaths imagePaths;
final OnSelectLabelAction onSelectLabelAction;
const LabelListContextMenu({
super.key,
required this.labelList,
required this.presentationEmail,
required this.imagePaths,
required this.onSelectLabelAction,
});
@override
@@ -24,13 +26,14 @@ class LabelListContextMenu extends StatelessWidget {
return ListView.builder(
shrinkWrap: true,
itemCount: labelList.length,
itemBuilder: (context, index) {
itemBuilder: (_, index) {
final label = labelList[index];
final isSelected = emailLabels.contains(label);
return LabelItemContextMenu(
label: label,
imagePaths: imagePaths,
isSelected: isSelected,
onSelectLabelAction: onSelectLabelAction,
);
},
);