settings_dialog.dart 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import 'package:app_flowy/workspace/presentation/settings/widgets/settings_appearance_view.dart';
  2. import 'package:app_flowy/workspace/presentation/settings/widgets/settings_language_view.dart';
  3. import 'package:app_flowy/workspace/presentation/settings/widgets/settings_menu.dart';
  4. import 'package:flutter/material.dart';
  5. import 'package:app_flowy/generated/locale_keys.g.dart';
  6. import 'package:easy_localization/easy_localization.dart';
  7. class SettingsDialog extends StatefulWidget {
  8. const SettingsDialog({Key? key}) : super(key: key);
  9. @override
  10. State<SettingsDialog> createState() => _SettingsDialogState();
  11. }
  12. class _SettingsDialogState extends State<SettingsDialog> {
  13. int _selectedViewIndex = 0;
  14. final List<Widget> settingsViews = const [
  15. SettingsAppearanceView(),
  16. SettingsLanguageView(),
  17. ];
  18. @override
  19. Widget build(BuildContext context) {
  20. return AlertDialog(
  21. shape: RoundedRectangleBorder(
  22. borderRadius: BorderRadius.circular(10),
  23. ),
  24. title: Text(
  25. LocaleKeys.settings_title.tr(),
  26. style: const TextStyle(
  27. fontWeight: FontWeight.bold,
  28. ),
  29. ),
  30. content: ConstrainedBox(
  31. constraints: const BoxConstraints(
  32. maxHeight: 600,
  33. ),
  34. child: Row(
  35. crossAxisAlignment: CrossAxisAlignment.start,
  36. children: [
  37. Expanded(
  38. flex: 1,
  39. child: SettingsMenu(
  40. changeSelectedIndex: (index) {
  41. setState(() {
  42. _selectedViewIndex = index;
  43. });
  44. },
  45. currentIndex: _selectedViewIndex,
  46. ),
  47. ),
  48. const VerticalDivider(),
  49. const SizedBox(width: 10),
  50. Expanded(
  51. flex: 4,
  52. child: settingsViews[_selectedViewIndex],
  53. )
  54. ],
  55. ),
  56. ),
  57. );
  58. }
  59. }