This commit is contained in:
Vadim 2022-12-16 23:53:26 +03:00
parent 9b0cba6ed7
commit ca8c1f8e4d
5 changed files with 19 additions and 73 deletions

View file

@ -2,7 +2,6 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:lightmeter/data/ev_source/ev_source_type.dart'; import 'package:lightmeter/data/ev_source/ev_source_type.dart';
import 'package:lightmeter/data/models/theme_type.dart';
import 'package:lightmeter/data/permissions_service.dart'; import 'package:lightmeter/data/permissions_service.dart';
import 'package:lightmeter/screens/settings/settings_screen.dart'; import 'package:lightmeter/screens/settings/settings_screen.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';

View file

@ -1,50 +0,0 @@
import 'package:flutter/material.dart';
import 'package:lightmeter/generated/l10n.dart';
import 'package:lightmeter/data/models/photography_value.dart';
class FractionalStopsDialog extends StatefulWidget {
final StopType selectedType;
const FractionalStopsDialog({required this.selectedType, super.key});
@override
State<FractionalStopsDialog> createState() => _FractionalStopsDialogState();
}
class _FractionalStopsDialogState extends State<FractionalStopsDialog> {
late StopType _selected = widget.selectedType;
@override
Widget build(BuildContext context) {
return SimpleDialog(
title: Text(S.of(context).showFractionalStops),
children: [
RadioListTile<StopType>(
value: StopType.full,
groupValue: _selected,
title: Text(S.of(context).none),
onChanged: _onChanged,
),
RadioListTile<StopType>(
value: StopType.half,
groupValue: _selected,
title: Text(S.of(context).halfStops),
onChanged: _onChanged,
),
RadioListTile<StopType>(
value: StopType.third,
groupValue: _selected,
title: Text(S.of(context).thirdStops),
onChanged: _onChanged,
),
],
);
}
void _onChanged(StopType? value) {
setState(() {
_selected = value!;
});
Navigator.of(context).pop(_selected);
}
}

View file

@ -1,28 +1,29 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:lightmeter/generated/l10n.dart';
import 'package:lightmeter/data/models/photography_value.dart'; import 'package:lightmeter/data/models/photography_value.dart';
import 'package:lightmeter/generated/l10n.dart';
import 'package:lightmeter/utils/stop_type_provider.dart'; import 'package:lightmeter/utils/stop_type_provider.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'dialog_fractional_stops.dart'; import 'shared/dialog_picker.dart';
class FractionalStopsListTile extends StatefulWidget { class StopTypeListTile extends StatelessWidget {
const FractionalStopsListTile({super.key}); const StopTypeListTile({super.key});
@override
State<FractionalStopsListTile> createState() => _FractionalStopsListTileState();
}
class _FractionalStopsListTileState extends State<FractionalStopsListTile> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ListTile( return ListTile(
leading: const Icon(Icons.straighten),
title: Text(S.of(context).fractionalStops), title: Text(S.of(context).fractionalStops),
trailing: Text(selectedType), trailing: Text(_typeToString(context, context.watch<StopType>())),
onTap: () { onTap: () {
showDialog( showDialog<StopType>(
context: context, context: context,
builder: (_) => FractionalStopsDialog(selectedType: context.read<StopType>()), builder: (_) => DialogPicker<StopType>(
title: S.of(context).showFractionalStops,
selectedValue: context.read<StopType>(),
values: StopType.values,
titleAdapter: _typeToString,
),
).then((value) { ).then((value) {
if (value != null) { if (value != null) {
StopTypeProvider.of(context).set(value); StopTypeProvider.of(context).set(value);
@ -32,8 +33,8 @@ class _FractionalStopsListTileState extends State<FractionalStopsListTile> {
); );
} }
String get selectedType { String _typeToString(BuildContext context, StopType stopType) {
switch (context.watch<StopType>()) { switch (stopType) {
case StopType.full: case StopType.full:
return S.of(context).none; return S.of(context).none;
case StopType.half: case StopType.half:

View file

@ -1,9 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:lightmeter/data/models/theme_type.dart'; import 'package:lightmeter/data/models/theme_type.dart';
import 'package:lightmeter/data/shared_prefs_service.dart';
import 'package:lightmeter/generated/l10n.dart'; import 'package:lightmeter/generated/l10n.dart';
import 'package:lightmeter/res/theme.dart'; import 'package:lightmeter/res/theme.dart';
import 'package:lightmeter/utils/stop_type_provider.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'shared/dialog_picker.dart'; import 'shared/dialog_picker.dart';

View file

@ -2,9 +2,7 @@ import 'package:flutter/material.dart';
import 'package:lightmeter/generated/l10n.dart'; import 'package:lightmeter/generated/l10n.dart';
import 'package:lightmeter/res/dimens.dart'; import 'package:lightmeter/res/dimens.dart';
import 'components/caffeine_tile.dart'; import 'components/fractional_stops_tile.dart';
import 'components/haptics_tile.dart';
import 'components/fractional_stops/list_tile_fractional_stops.dart';
import 'components/theme_type_tile.dart'; import 'components/theme_type_tile.dart';
class SettingsScreen extends StatelessWidget { class SettingsScreen extends StatelessWidget {
@ -38,9 +36,9 @@ class SettingsScreen extends StatelessWidget {
SliverList( SliverList(
delegate: SliverChildListDelegate( delegate: SliverChildListDelegate(
[ [
const FractionalStopsListTile(), const StopTypeListTile(),
const CaffeineListTile(), // const CaffeineListTile(),
const HapticsListTile(), // const HapticsListTile(),
const ThemeTypeListTile(), const ThemeTypeListTile(),
], ],
), ),