m3_lightmeter/lib/screens/settings/components/theme/components/primary_color/widget_list_tile_primary_color.dart
Vadim 5adcee00dd
ML-105 Hide providers from the widget tree (#106)
* Added `ServiceProviders` widget

* Added `EnumProviders` widget for enum values

* Moved `ThemeProvider` functionality to `EnumProviders`

* Style

* `EnumProviders` -> `UserPreferencesProvider`

* `ServiceProviders` -> `ServiceProvider`

* Moved `MeteringScreenLayoutProvider` functionality to `UserPreferencesProvider`

* typo

* Removed `InheritedModelAspectListener`

* TODO

* Removed Inherited Generics

* Removed redundant `LightmeterProviders`

* Removed redundant methods from `ServicesProvider`

* `_inheritFrom` -> `_inheritFromEnumsModel`

* Fixed `MeteringScreenLayoutConfig` updates

* Separated `_ThemeModel`

* typo

* `_EnumsModel` -> `_UserPreferencesModel`
2023-08-14 12:25:37 +02:00

39 lines
1.3 KiB
Dart

import 'package:flutter/material.dart';
import 'package:lightmeter/data/models/dynamic_colors_state.dart';
import 'package:lightmeter/generated/l10n.dart';
import 'package:lightmeter/providers/user_preferences_provider.dart';
import 'package:lightmeter/res/dimens.dart';
import 'package:lightmeter/screens/settings/components/theme/components/primary_color/components/primary_color_picker_dialog/widget_dialog_picker_primary_color.dart';
class PrimaryColorListTile extends StatelessWidget {
const PrimaryColorListTile({super.key});
@override
Widget build(BuildContext context) {
if (UserPreferencesProvider.dynamicColorStateOf(context) == DynamicColorState.enabled) {
return Opacity(
opacity: Dimens.disabledOpacity,
child: IgnorePointer(
child: ListTile(
leading: const Icon(Icons.palette),
title: Text(S.of(context).primaryColor),
),
),
);
}
return ListTile(
leading: const Icon(Icons.palette),
title: Text(S.of(context).primaryColor),
onTap: () {
showDialog<Color>(
context: context,
builder: (_) => const PrimaryColorDialogPicker(),
).then((value) {
if (value != null) {
UserPreferencesProvider.of(context).setPrimaryColor(value);
}
});
},
);
}
}