mirror of
https://gitlab.com/veilid/veilidchat.git
synced 2025-08-11 15:40:29 -04:00
accessibility work
This commit is contained in:
parent
be8014c97a
commit
de691cd778
48 changed files with 862 additions and 551 deletions
79
lib/theme/views/styled_widgets/styled_slider.dart
Normal file
79
lib/theme/views/styled_widgets/styled_slider.dart
Normal file
|
@ -0,0 +1,79 @@
|
|||
import 'package:async_tools/async_tools.dart';
|
||||
import 'package:awesome_extensions/awesome_extensions_flutter.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../../models/models.dart';
|
||||
import '../views.dart';
|
||||
|
||||
const _kStyledSliderChanged = 'kStyledSliderChanged';
|
||||
|
||||
class StyledSlider extends StatelessWidget {
|
||||
const StyledSlider(
|
||||
{required double value,
|
||||
String? label,
|
||||
String? decoratorLabel,
|
||||
Future<void> Function(double)? onChanged,
|
||||
Widget? leftWidget,
|
||||
Widget? rightWidget,
|
||||
double min = 0,
|
||||
double max = 1,
|
||||
int? divisions,
|
||||
super.key})
|
||||
: _value = value,
|
||||
_onChanged = onChanged,
|
||||
_leftWidget = leftWidget,
|
||||
_rightWidget = rightWidget,
|
||||
_min = min,
|
||||
_max = max,
|
||||
_divisions = divisions,
|
||||
_label = label,
|
||||
_decoratorLabel = decoratorLabel;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final theme = Theme.of(context);
|
||||
final scale = theme.extension<ScaleTheme>()!;
|
||||
|
||||
Widget ctrl = Row(children: [
|
||||
if (_leftWidget != null) _leftWidget,
|
||||
Slider(
|
||||
activeColor: scale.scheme.primaryScale.border,
|
||||
inactiveColor: scale.scheme.primaryScale.subtleBorder,
|
||||
secondaryActiveColor: scale.scheme.secondaryScale.border,
|
||||
value: _value,
|
||||
min: _min,
|
||||
max: _max,
|
||||
divisions: _divisions,
|
||||
label: _label,
|
||||
thumbColor: scale.scheme.primaryScale.appText,
|
||||
overlayColor:
|
||||
WidgetStateColor.resolveWith((ws) => theme.focusColor),
|
||||
onChanged: _onChanged == null
|
||||
? null
|
||||
: (value) {
|
||||
singleFuture((this, _kStyledSliderChanged), () async {
|
||||
await _onChanged(value);
|
||||
});
|
||||
})
|
||||
.expanded(),
|
||||
if (_rightWidget != null) _rightWidget,
|
||||
]);
|
||||
if (_decoratorLabel != null) {
|
||||
ctrl = ctrl
|
||||
.paddingLTRB(4.scaled(context), 4.scaled(context), 4.scaled(context),
|
||||
4.scaled(context))
|
||||
.decoratorLabel(context, _decoratorLabel);
|
||||
}
|
||||
return ctrl;
|
||||
}
|
||||
|
||||
final String? _label;
|
||||
final String? _decoratorLabel;
|
||||
final Future<void> Function(double)? _onChanged;
|
||||
final double _value;
|
||||
final Widget? _leftWidget;
|
||||
final Widget? _rightWidget;
|
||||
final double _min;
|
||||
final double _max;
|
||||
final int? _divisions;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue