mirror of
https://gitlab.com/veilid/veilidchat.git
synced 2025-07-22 14:10:37 -04:00
Accessibility update
This commit is contained in:
parent
be8014c97a
commit
3b1cb53b8a
55 changed files with 1089 additions and 807 deletions
|
@ -1,37 +1,34 @@
|
|||
import 'package:awesome_extensions/awesome_extensions.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:flutter_translate/flutter_translate.dart';
|
||||
|
||||
import '../../proto/proto.dart' as proto;
|
||||
import '../../theme/theme.dart';
|
||||
|
||||
class AvailabilityWidget extends StatelessWidget {
|
||||
const AvailabilityWidget(
|
||||
{required this.availability,
|
||||
required this.color,
|
||||
this.vertical = true,
|
||||
this.size = 32,
|
||||
super.key});
|
||||
|
||||
static Widget availabilityIcon(proto.Availability availability, Color color,
|
||||
{double size = 24}) {
|
||||
static Widget availabilityIcon(
|
||||
proto.Availability availability,
|
||||
Color color,
|
||||
) {
|
||||
late final Widget icon;
|
||||
switch (availability) {
|
||||
case proto.Availability.AVAILABILITY_AWAY:
|
||||
icon = SvgPicture.asset('assets/images/toilet.svg',
|
||||
width: size,
|
||||
height: size,
|
||||
colorFilter: ColorFilter.mode(color, BlendMode.srcATop));
|
||||
case proto.Availability.AVAILABILITY_BUSY:
|
||||
icon = Icon(Icons.event_busy, size: size);
|
||||
icon = const Icon(Icons.event_busy, applyTextScaling: true);
|
||||
case proto.Availability.AVAILABILITY_FREE:
|
||||
icon = Icon(Icons.event_available, size: size);
|
||||
icon = const Icon(Icons.event_available, applyTextScaling: true);
|
||||
case proto.Availability.AVAILABILITY_OFFLINE:
|
||||
icon = Icon(Icons.cloud_off, size: size);
|
||||
icon = const Icon(Icons.cloud_off, applyTextScaling: true);
|
||||
case proto.Availability.AVAILABILITY_UNSPECIFIED:
|
||||
icon = Icon(Icons.question_mark, size: size);
|
||||
icon = const Icon(Icons.question_mark, applyTextScaling: true);
|
||||
}
|
||||
return icon;
|
||||
}
|
||||
|
@ -59,23 +56,17 @@ class AvailabilityWidget extends StatelessWidget {
|
|||
final textTheme = theme.textTheme;
|
||||
|
||||
final name = availabilityName(availability);
|
||||
final icon = availabilityIcon(availability, color, size: size * 2 / 3);
|
||||
final icon = availabilityIcon(availability, color);
|
||||
|
||||
return vertical
|
||||
? ConstrainedBox(
|
||||
constraints: BoxConstraints.tightFor(width: size),
|
||||
child: Column(mainAxisSize: MainAxisSize.min, children: [
|
||||
icon,
|
||||
Text(name, style: textTheme.labelSmall!.copyWith(color: color))
|
||||
.fit(fit: BoxFit.scaleDown)
|
||||
]))
|
||||
: ConstrainedBox(
|
||||
constraints: BoxConstraints.tightFor(height: size),
|
||||
child: Row(mainAxisSize: MainAxisSize.min, children: [
|
||||
icon,
|
||||
Text(name, style: textTheme.labelLarge!.copyWith(color: color))
|
||||
.paddingLTRB(size / 4, 0, 0, 0)
|
||||
]));
|
||||
? Column(mainAxisSize: MainAxisSize.min, children: [
|
||||
icon,
|
||||
Text(name, style: textTheme.labelSmall!.copyWith(color: color))
|
||||
])
|
||||
: Row(mainAxisSize: MainAxisSize.min, children: [
|
||||
icon,
|
||||
Text(' $name', style: textTheme.labelLarge!.copyWith(color: color))
|
||||
]);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -83,7 +74,6 @@ class AvailabilityWidget extends StatelessWidget {
|
|||
final proto.Availability availability;
|
||||
final Color color;
|
||||
final bool vertical;
|
||||
final double size;
|
||||
|
||||
@override
|
||||
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
|
||||
|
@ -92,7 +82,6 @@ class AvailabilityWidget extends StatelessWidget {
|
|||
..add(
|
||||
DiagnosticsProperty<proto.Availability>('availability', availability))
|
||||
..add(DiagnosticsProperty<bool>('vertical', vertical))
|
||||
..add(DoubleProperty('size', size))
|
||||
..add(ColorProperty('color', color));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue