general_section_widget.dart 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import 'package:flutter/material.dart';
  2. import 'package:photos/services/billing_service.dart';
  3. import 'package:photos/services/user_service.dart';
  4. import 'package:photos/theme/ente_theme.dart';
  5. import 'package:photos/ui/advanced_settings_screen.dart';
  6. import 'package:photos/ui/components/captioned_text_widget.dart';
  7. import 'package:photos/ui/components/expandable_menu_item_widget.dart';
  8. import 'package:photos/ui/components/menu_item_widget.dart';
  9. import 'package:photos/ui/payment/subscription.dart';
  10. import 'package:photos/ui/settings/common_settings.dart';
  11. import 'package:photos/utils/dialog_util.dart';
  12. import 'package:photos/utils/navigation_util.dart';
  13. class GeneralSectionWidget extends StatelessWidget {
  14. const GeneralSectionWidget({Key? key}) : super(key: key);
  15. @override
  16. Widget build(BuildContext context) {
  17. return ExpandableMenuItemWidget(
  18. title: "General",
  19. selectionOptionsWidget: _getSectionOptions(context),
  20. leadingIcon: Icons.graphic_eq,
  21. );
  22. }
  23. Widget _getSectionOptions(BuildContext context) {
  24. return Column(
  25. children: [
  26. sectionOptionSpacing,
  27. MenuItemWidget(
  28. captionedTextWidget: const CaptionedTextWidget(
  29. title: "Manage subscription",
  30. ),
  31. pressedColor: getEnteColorScheme(context).fillFaint,
  32. trailingIcon: Icons.chevron_right_outlined,
  33. trailingIconIsMuted: true,
  34. onTap: () {
  35. _onManageSubscriptionTapped(context);
  36. },
  37. ),
  38. sectionOptionSpacing,
  39. MenuItemWidget(
  40. captionedTextWidget: const CaptionedTextWidget(
  41. title: "Family plans",
  42. ),
  43. pressedColor: getEnteColorScheme(context).fillFaint,
  44. trailingIcon: Icons.chevron_right_outlined,
  45. trailingIconIsMuted: true,
  46. onTap: () {
  47. _onFamilyPlansTapped(context);
  48. },
  49. ),
  50. sectionOptionSpacing,
  51. MenuItemWidget(
  52. captionedTextWidget: const CaptionedTextWidget(
  53. title: "Advanced",
  54. ),
  55. pressedColor: getEnteColorScheme(context).fillFaint,
  56. trailingIcon: Icons.chevron_right_outlined,
  57. trailingIconIsMuted: true,
  58. onTap: () {
  59. _onAdvancedTapped(context);
  60. },
  61. ),
  62. sectionOptionSpacing,
  63. ],
  64. );
  65. }
  66. void _onManageSubscriptionTapped(BuildContext context) {
  67. Navigator.of(context).push(
  68. MaterialPageRoute(
  69. builder: (BuildContext context) {
  70. return getSubscriptionPage();
  71. },
  72. ),
  73. );
  74. }
  75. Future<void> _onFamilyPlansTapped(BuildContext context) async {
  76. final dialog = createProgressDialog(context, "Please wait...");
  77. await dialog.show();
  78. final userDetails =
  79. await UserService.instance.getUserDetailsV2(memoryCount: false);
  80. await dialog.hide();
  81. BillingService.instance.launchFamilyPortal(context, userDetails);
  82. }
  83. void _onAdvancedTapped(BuildContext context) {
  84. routeToPage(
  85. context,
  86. const AdvancedSettingsScreen(),
  87. );
  88. }
  89. }