mirror of
https://github.com/vodemn/m3_lightmeter.git
synced 2025-08-17 18:46:47 +00:00
brought back enabled adapter
This commit is contained in:
parent
a7c0282e5a
commit
709d19bb73
2 changed files with 20 additions and 12 deletions
|
@ -1,6 +1,7 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:lightmeter/data/models/camera_feature.dart';
|
import 'package:lightmeter/data/models/camera_feature.dart';
|
||||||
import 'package:lightmeter/generated/l10n.dart';
|
import 'package:lightmeter/generated/l10n.dart';
|
||||||
|
import 'package:lightmeter/providers/services_provider.dart';
|
||||||
import 'package:lightmeter/providers/user_preferences_provider.dart';
|
import 'package:lightmeter/providers/user_preferences_provider.dart';
|
||||||
import 'package:lightmeter/screens/settings/components/shared/dialog_switch/widget_dialog_switch.dart';
|
import 'package:lightmeter/screens/settings/components/shared/dialog_switch/widget_dialog_switch.dart';
|
||||||
import 'package:lightmeter/screens/settings/components/shared/iap_list_tile/widget_list_tile_iap.dart';
|
import 'package:lightmeter/screens/settings/components/shared/iap_list_tile/widget_list_tile_iap.dart';
|
||||||
|
@ -10,7 +11,7 @@ class CameraFeaturesListTile extends StatelessWidget {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return IAPListTile(
|
return ListTile(
|
||||||
leading: const Icon(Icons.camera_alt_outlined),
|
leading: const Icon(Icons.camera_alt_outlined),
|
||||||
title: Text(S.of(context).cameraFeatures),
|
title: Text(S.of(context).cameraFeatures),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
|
@ -20,6 +21,12 @@ class CameraFeaturesListTile extends StatelessWidget {
|
||||||
icon: Icons.camera_alt_outlined,
|
icon: Icons.camera_alt_outlined,
|
||||||
title: S.of(context).cameraFeatures,
|
title: S.of(context).cameraFeatures,
|
||||||
values: UserPreferencesProvider.cameraConfigOf(context),
|
values: UserPreferencesProvider.cameraConfigOf(context),
|
||||||
|
enabledAdapter: (feature) => switch (feature) {
|
||||||
|
CameraFeature.spotMetering => true,
|
||||||
|
CameraFeature.histogram => true,
|
||||||
|
CameraFeature.showFocalLength =>
|
||||||
|
ServicesProvider.of(context).userPreferencesService.cameraFocalLength != null,
|
||||||
|
},
|
||||||
titleAdapter: (context, feature) => switch (feature) {
|
titleAdapter: (context, feature) => switch (feature) {
|
||||||
CameraFeature.spotMetering => S.of(context).cameraFeatureSpotMetering,
|
CameraFeature.spotMetering => S.of(context).cameraFeatureSpotMetering,
|
||||||
CameraFeature.histogram => S.of(context).cameraFeatureHistogram,
|
CameraFeature.histogram => S.of(context).cameraFeatureHistogram,
|
||||||
|
|
|
@ -11,6 +11,7 @@ class DialogSwitch<T> extends StatefulWidget {
|
||||||
final Map<T, bool> values;
|
final Map<T, bool> values;
|
||||||
final StringAdapter<T> titleAdapter;
|
final StringAdapter<T> titleAdapter;
|
||||||
final StringAdapter<T>? subtitleAdapter;
|
final StringAdapter<T>? subtitleAdapter;
|
||||||
|
final bool Function(T value)? enabledAdapter;
|
||||||
final ValueChanged<Map<T, bool>> onSave;
|
final ValueChanged<Map<T, bool>> onSave;
|
||||||
|
|
||||||
const DialogSwitch({
|
const DialogSwitch({
|
||||||
|
@ -20,6 +21,7 @@ class DialogSwitch<T> extends StatefulWidget {
|
||||||
required this.values,
|
required this.values,
|
||||||
required this.titleAdapter,
|
required this.titleAdapter,
|
||||||
this.subtitleAdapter,
|
this.subtitleAdapter,
|
||||||
|
this.enabledAdapter,
|
||||||
required this.onSave,
|
required this.onSave,
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
|
@ -54,21 +56,20 @@ class _DialogSwitchState<T> extends State<DialogSwitch<T>> {
|
||||||
shrinkWrap: true,
|
shrinkWrap: true,
|
||||||
children: _features.entries.map(
|
children: _features.entries.map(
|
||||||
(entry) {
|
(entry) {
|
||||||
|
final isEnabled = widget.enabledAdapter?.call(entry.key) ?? true;
|
||||||
return SwitchListTile(
|
return SwitchListTile(
|
||||||
contentPadding: EdgeInsets.symmetric(horizontal: Dimens.dialogTitlePadding.left),
|
contentPadding: EdgeInsets.symmetric(horizontal: Dimens.dialogTitlePadding.left),
|
||||||
title: Text(widget.titleAdapter(context, entry.key)),
|
title: Text(widget.titleAdapter(context, entry.key)),
|
||||||
subtitle: widget.subtitleAdapter != null
|
subtitle:
|
||||||
? Text(
|
widget.subtitleAdapter != null ? Text(widget.subtitleAdapter!.call(context, entry.key)) : null,
|
||||||
widget.subtitleAdapter!.call(context, entry.key),
|
|
||||||
style: Theme.of(context).listTileTheme.subtitleTextStyle,
|
|
||||||
)
|
|
||||||
: null,
|
|
||||||
value: _features[entry.key]!,
|
value: _features[entry.key]!,
|
||||||
onChanged: (value) {
|
onChanged: isEnabled
|
||||||
setState(() {
|
? (value) {
|
||||||
_features.update(entry.key, (_) => value);
|
setState(() {
|
||||||
});
|
_features.update(entry.key, (_) => value);
|
||||||
},
|
});
|
||||||
|
}
|
||||||
|
: null,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
).toList(),
|
).toList(),
|
||||||
|
|
Loading…
Reference in a new issue