settings_dialog.dart 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. children: [
  32. Expanded(
  33. flex: 1,
  34. child: SettingsMenu(
  35. changeSelectedIndex: (index) {
  36. setState(() {
  37. _selectedViewIndex = index;
  38. });
  39. },
  40. currentIndex: _selectedViewIndex,
  41. ),
  42. ),
  43. Expanded(
  44. flex: 4,
  45. child: settingsViews[_selectedViewIndex],
  46. )
  47. ],
  48. ),
  49. ),
  50. ],
  51. ),
  52. ),
  53. );
  54. }
  55. }
  56. class SettingsPanelHeader extends StatelessWidget {
  57. const SettingsPanelHeader({
  58. Key? key,
  59. }) : super(key: key);
  60. @override
  61. Widget build(BuildContext context) {
  62. return const Padding(
  63. padding: EdgeInsets.all(16.0),
  64. child: Text(
  65. //TODO: Change to i10n
  66. 'Settings',
  67. style: TextStyle(
  68. fontWeight: FontWeight.bold,
  69. fontSize: 24,
  70. ),
  71. ),
  72. );
  73. }
  74. }