social_section_widget.dart 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import 'package:flutter/material.dart';
  2. import 'package:photos/services/update_service.dart';
  3. import 'package:photos/theme/ente_theme.dart';
  4. import 'package:photos/ui/components/captioned_text_widget.dart';
  5. import 'package:photos/ui/components/expandable_menu_item_widget.dart';
  6. import 'package:photos/ui/components/menu_item_widget/menu_item_widget.dart';
  7. import 'package:photos/ui/settings/common_settings.dart';
  8. import 'package:url_launcher/url_launcher_string.dart';
  9. class SocialSectionWidget extends StatelessWidget {
  10. const SocialSectionWidget({Key? key}) : super(key: key);
  11. @override
  12. Widget build(BuildContext context) {
  13. return ExpandableMenuItemWidget(
  14. title: "Social",
  15. selectionOptionsWidget: _getSectionOptions(context),
  16. leadingIcon: Icons.interests_outlined,
  17. );
  18. }
  19. Widget _getSectionOptions(BuildContext context) {
  20. final List<Widget> options = [];
  21. final result = UpdateService.instance.getRateDetails();
  22. final String ratePlace = result.item1;
  23. final String rateUrl = result.item2;
  24. options.addAll(
  25. [
  26. SocialsMenuItemWidget("Rate us on $ratePlace", rateUrl),
  27. sectionOptionSpacing,
  28. ],
  29. );
  30. options.addAll(
  31. [
  32. const SocialsMenuItemWidget("Blog", "https://ente.io/blog"),
  33. sectionOptionSpacing,
  34. const SocialsMenuItemWidget("Twitter", "https://twitter.com/enteio"),
  35. sectionOptionSpacing,
  36. const SocialsMenuItemWidget("Mastodon", "https://mstdn.social/@ente"),
  37. sectionOptionSpacing,
  38. const SocialsMenuItemWidget(
  39. "Matrix",
  40. "https://ente.io/matrix/",
  41. ),
  42. sectionOptionSpacing,
  43. const SocialsMenuItemWidget("Discord", "https://ente.io/discord"),
  44. sectionOptionSpacing,
  45. const SocialsMenuItemWidget("Reddit", "https://reddit.com/r/enteio"),
  46. sectionOptionSpacing,
  47. ],
  48. );
  49. return Column(children: options);
  50. }
  51. }
  52. class SocialsMenuItemWidget extends StatelessWidget {
  53. final String text;
  54. final String urlSring;
  55. const SocialsMenuItemWidget(this.text, this.urlSring, {Key? key})
  56. : super(key: key);
  57. @override
  58. Widget build(BuildContext context) {
  59. return MenuItemWidget(
  60. captionedTextWidget: CaptionedTextWidget(
  61. title: text,
  62. ),
  63. pressedColor: getEnteColorScheme(context).fillFaint,
  64. trailingIcon: Icons.chevron_right_outlined,
  65. trailingIconIsMuted: true,
  66. onTap: () async {
  67. launchUrlString(urlSring);
  68. },
  69. );
  70. }
  71. }