Select Git revision
parameter_widget.dart
application_config_definition.dart 4.39 KiB
import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
class ApplicationConfigDefinition {
final String appTitle;
final List<ApplicationSettingsParameter> activitySettings;
final void Function(BuildContext context) startNewActivity;
final void Function(BuildContext context) deleteCurrentActivity;
final void Function(BuildContext context) resumeActivity;
const ApplicationConfigDefinition({
required this.appTitle,
required this.activitySettings,
required this.startNewActivity,
required this.deleteCurrentActivity,
required this.resumeActivity,
});
ApplicationSettingsParameter getFromCode(String paramCode) {
final List<ApplicationSettingsParameter> settings = activitySettings;
return settings.where((setting) => setting.code == paramCode).firstOrNull ??
ApplicationSettingsParameter.empty();
}
}
class ApplicationSettingsParameter {
final String code;
final bool displayedOnTop;
final List<ApplicationSettingsParameterItemValue> values;
final Widget Function({
required BuildContext context,
required double size,
required ApplicationSettingsParameterItemValue itemValue,
required VoidCallback onPressed,
})? builder;
final CustomPainter Function(BuildContext context, String value)? customPainter;
final int Function(String value)? intValueGetter;
final Color Function(String value)? colorGetter;
const ApplicationSettingsParameter({
required this.code,
this.displayedOnTop = true,
required this.values,
this.builder,
this.customPainter,
this.colorGetter,
this.intValueGetter,
});
List<String> get allowedValues {
return values.map((ApplicationSettingsParameterItemValue item) => item.value).toList();
}
String get defaultValue => values.firstWhere((element) => element.isDefault).value;
factory ApplicationSettingsParameter.empty() {
return ApplicationSettingsParameter(
code: '',
values: [
ApplicationSettingsParameterItemValue.empty(),
],
intValueGetter: (value) => 0,
);
}
Widget buildParameterItem({
required BuildContext context,
required ApplicationSettingsParameter parameter,