general_section_widget.dart 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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/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/navigation_util.dart';
  12. class GeneralSectionWidget extends StatelessWidget {
  13. const GeneralSectionWidget({Key? key}) : super(key: key);
  14. @override
  15. Widget build(BuildContext context) {
  16. return ExpandableMenuItemWidget(
  17. title: "General",
  18. selectionOptionsWidget: _getSectionOptions(context),
  19. leadingIcon: Icons.graphic_eq,
  20. );
  21. }
  22. Widget _getSectionOptions(BuildContext context) {
  23. return Column(
  24. children: [
  25. sectionOptionSpacing,
  26. MenuItemWidget(
  27. captionedTextWidget: const CaptionedTextWidget(
  28. title: "Manage subscription",
  29. ),
  30. pressedColor: getEnteColorScheme(context).fillFaint,
  31. trailingIcon: Icons.chevron_right_outlined,
  32. trailingIconIsMuted: true,
  33. onTap: () async {
  34. _onManageSubscriptionTapped(context);
  35. },
  36. ),
  37. sectionOptionSpacing,
  38. MenuItemWidget(
  39. captionedTextWidget: const CaptionedTextWidget(
  40. title: "Family plans",
  41. ),
  42. pressedColor: getEnteColorScheme(context).fillFaint,
  43. trailingIcon: Icons.chevron_right_outlined,
  44. trailingIconIsMuted: true,
  45. showOnlyLoadingState: true,
  46. onTap: () async {
  47. await _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: () async {
  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 userDetails =
  77. await UserService.instance.getUserDetailsV2(memoryCount: false);
  78. BillingService.instance.launchFamilyPortal(context, userDetails);
  79. }
  80. void _onAdvancedTapped(BuildContext context) {
  81. routeToPage(
  82. context,
  83. const AdvancedSettingsScreen(),
  84. );
  85. }
  86. }