settings_dialog.dart 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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. class SettingsDialog extends StatefulWidget {
  6. const SettingsDialog({Key? key}) : super(key: key);
  7. @override
  8. State<SettingsDialog> createState() => _SettingsDialogState();
  9. }
  10. class _SettingsDialogState extends State<SettingsDialog> {
  11. int _selectedViewIndex = 0;
  12. final List<Widget> settingsViews = const [
  13. SettingsAppearanceView(),
  14. SettingsLanguageView(),
  15. ];
  16. @override
  17. Widget build(BuildContext context) {
  18. return AlertDialog(
  19. shape: RoundedRectangleBorder(
  20. borderRadius: BorderRadius.circular(10),
  21. ),
  22. title: SizedBox(
  23. height: 600,
  24. width: 800,
  25. child: Column(
  26. crossAxisAlignment: CrossAxisAlignment.start,
  27. children: [
  28. const SettingsPanelHeader(),
  29. Expanded(
  30. child: Row(
  31. crossAxisAlignment: CrossAxisAlignment.start,
  32. children: [
  33. Expanded(
  34. flex: 1,
  35. child: SettingsMenu(
  36. changeSelectedIndex: (index) {
  37. setState(() {
  38. _selectedViewIndex = index;
  39. });
  40. },
  41. currentIndex: _selectedViewIndex,
  42. ),
  43. ),
  44. const VerticalDivider(),
  45. const SizedBox(width: 10),
  46. Expanded(
  47. flex: 4,
  48. child: settingsViews[_selectedViewIndex],
  49. )
  50. ],
  51. ),
  52. ),
  53. ],
  54. ),
  55. ),
  56. );
  57. }
  58. }
  59. class SettingsPanelHeader extends StatelessWidget {
  60. const SettingsPanelHeader({
  61. Key? key,
  62. }) : super(key: key);
  63. @override
  64. Widget build(BuildContext context) {
  65. return const Padding(
  66. padding: EdgeInsets.all(16.0),
  67. child: Text(
  68. //TODO: Change to i10n
  69. 'Settings',
  70. style: TextStyle(
  71. fontWeight: FontWeight.bold,
  72. fontSize: 24,
  73. ),
  74. ),
  75. );
  76. }
  77. }