settings_dialog.dart 2.2 KB

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