TF-1310: [Presentation] Refactor buildTree logic in TreeBuilder + BaseMailboxController

This commit is contained in:
HuyNguyen
2023-02-02 22:19:43 +07:00
committed by Dat Vu
parent d57bcd10dd
commit 10ba3867d8
30 changed files with 523 additions and 237 deletions
@@ -132,14 +132,6 @@ class MailboxView extends GetWidget<MailboxController> with AppLoaderMixin, Popu
.build());
}
Widget _buildSearchBarWidget(BuildContext context) {
return Padding(
padding: EdgeInsets.only(top: 16, bottom: 16, right: 4, left: _responsiveUtils.isDesktop(context) ? 0 : 12),
child: SearchBarView(
_imagePaths,
hintTextSearch: AppLocalizations.of(context).hint_search_mailboxes,
onOpenSearchViewAction: controller.enableSearch));
}
Widget _buildLoadingView() {
return Obx(() => controller.viewState.value.fold(
@@ -147,7 +139,7 @@ class MailboxView extends GetWidget<MailboxController> with AppLoaderMixin, Popu
(success) => success is LoadingState
? Padding(padding: const EdgeInsets.only(top: 16), child: loadingWidget)
: const SizedBox.shrink()));
}
}
Widget _buildListMailbox(BuildContext context) {
return Stack(
@@ -178,22 +170,49 @@ class MailboxView extends GetWidget<MailboxController> with AppLoaderMixin, Popu
: const SizedBox.shrink()),
const SizedBox(height: 8),
const Divider(color: AppColor.colorDividerMailbox, height: 0.5, thickness: 0.2),
const SizedBox(height: 13),
Padding(
padding: EdgeInsets.only(left: _responsiveUtils.isDesktop(context) ? 0 : 12),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(AppLocalizations.of(context).mailBoxes,
style: const TextStyle(
fontSize: 17,
color: Colors.black,
fontWeight: FontWeight.bold)),
Padding(
padding: EdgeInsets.only(right: _responsiveUtils.isDesktop(context) ? 0 : 12),
child: Row(
children: [
buildIconWeb(
minSize: 40,
iconSize: 20,
iconPadding: EdgeInsets.zero,
splashRadius: 15,
icon: SvgPicture.asset(_imagePaths.icSearchBar, color: AppColor.colorTextButton, fit: BoxFit.fill),
onTap: () => controller.enableSearch()),
buildIconWeb(
minSize: 40,
iconSize: 20,
iconPadding: EdgeInsets.zero,
splashRadius: 15,
icon: SvgPicture.asset(_imagePaths.icAddNewFolder, color: AppColor.colorTextButton, fit: BoxFit.fill),
tooltip: AppLocalizations.of(context).new_mailbox,
onTap: () => controller.goToCreateNewMailboxView(context)),
],
)),
]),
),
const SizedBox(height: 8),
_buildHeaderMailboxCategory(context, MailboxCategories.folders),
Row(children: [
Expanded(child: _buildSearchBarWidget(context)),
Padding(
padding: EdgeInsets.only(right: _responsiveUtils.isDesktop(context) ? 0 : 12),
child: buildIconWeb(
minSize: 40,
iconPadding: EdgeInsets.zero,
splashRadius: 15,
icon: SvgPicture.asset(_imagePaths.icAddNewFolder, color: AppColor.colorTextButton, fit: BoxFit.fill),
tooltip: AppLocalizations.of(context).new_mailbox,
onTap: () => controller.goToCreateNewMailboxView(context))),
]),
Obx(() => controller.folderMailboxHasChild
? _buildMailboxCategory(context, MailboxCategories.folders, controller.folderRootNode)
_buildHeaderMailboxCategory(context, MailboxCategories.personalMailboxes),
Obx(() => controller.personalMailboxHasChild
? _buildMailboxCategory(context, MailboxCategories.personalMailboxes, controller.personalRootNode)
: const SizedBox.shrink()),
const SizedBox(height: 8),
_buildHeaderMailboxCategory(context, MailboxCategories.teamMailboxes),
Obx(() => controller.teamMailboxesHasChild
? _buildMailboxCategory(context, MailboxCategories.teamMailboxes, controller.teamMailboxesRootNode)
: const SizedBox.shrink()),
])
),