fix: 无障碍体验问题

This commit is contained in:
orz12
2024-03-07 09:32:18 +08:00
parent 9d684d1976
commit 7331038cdc
3 changed files with 53 additions and 44 deletions

View File

@@ -249,13 +249,12 @@ class _DynamicDetailPageState extends State<DynamicDetailPage>
scale: animation, child: child); scale: animation, child: child);
}, },
child: Text( child: Text(
'${_dynamicDetailController.acount.value}', '${_dynamicDetailController.acount.value}条回复',
key: ValueKey<int>( key: ValueKey<int>(
_dynamicDetailController.acount.value), _dynamicDetailController.acount.value),
), ),
), ),
), ),
const Text('条回复'),
const Spacer(), const Spacer(),
SizedBox( SizedBox(
height: 35, height: 35,

View File

@@ -117,7 +117,8 @@ Widget videoSeasonWidget(item, context, type, {floor = 1}) {
Colors.black54, Colors.black54,
], ],
), ),
borderRadius: BorderRadius.circular(StyleString.imgRadius.x)), borderRadius:
BorderRadius.circular(StyleString.imgRadius.x)),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
@@ -131,7 +132,12 @@ Widget videoSeasonWidget(item, context, type, {floor = 1}) {
color: Colors.white), color: Colors.white),
child: Row( child: Row(
children: [ children: [
Text(content.durationText ?? ''), if (content.durationText != null)
Text(
content.durationText,
semanticsLabel:
'时长${Utils.durationReadFormat(content.durationText)}',
),
if (content.durationText != null) if (content.durationText != null)
const SizedBox(width: 10), const SizedBox(width: 10),
Text(content.stat.play + '次围观'), Text(content.stat.play + '次围观'),

View File

@@ -214,6 +214,7 @@ class ReplyItem extends StatelessWidget {
margin: const EdgeInsets.only(top: 10, left: 45, right: 6, bottom: 4), margin: const EdgeInsets.only(top: 10, left: 45, right: 6, bottom: 4),
child: Semantics( child: Semantics(
label: replyItem?.content?.message ?? "", label: replyItem?.content?.message ?? "",
excludeSemantics: true,
child: Text.rich( child: Text.rich(
style: const TextStyle(height: 1.75), style: const TextStyle(height: 1.75),
maxLines: maxLines:
@@ -387,48 +388,51 @@ class ReplyItemRow extends StatelessWidget {
8, 8,
i == 0 && (extraRow == 1 || replies!.length > 1) ? 5 : 6, i == 0 && (extraRow == 1 || replies!.length > 1) ? 5 : 6,
), ),
child: Text.rich( child: Semantics(
overflow: TextOverflow.ellipsis, label: replies![i].member.uname + ' ' + replies![i].content.message,
maxLines: 2, excludeSemantics: true,
TextSpan( child: Text.rich(
children: [ overflow: TextOverflow.ellipsis,
maxLines: 2,
TextSpan( TextSpan(
text: replies![i].member.uname + ' ', children: [
style: TextStyle( TextSpan(
fontSize: Theme.of(context) text: replies![i].member.uname + ' ',
.textTheme style: TextStyle(
.titleSmall! fontSize: Theme.of(context)
.fontSize, .textTheme
color: Theme.of(context).colorScheme.primary, .titleSmall!
), .fontSize,
recognizer: TapGestureRecognizer() color: Theme.of(context).colorScheme.primary,
..onTap = () { ),
feedBack(); recognizer: TapGestureRecognizer()
final String heroTag = ..onTap = () {
Utils.makeHeroTag(replies![i].member.mid); feedBack();
Get.toNamed( final String heroTag = Utils.makeHeroTag(
'/member?mid=${replies![i].member.mid}', replies![i].member.mid);
arguments: { Get.toNamed(
'face': replies![i].member.avatar, '/member?mid=${replies![i].member.mid}',
'heroTag': heroTag arguments: {
}); 'face': replies![i].member.avatar,
}, 'heroTag': heroTag
), });
if (replies![i].isUp) },
const WidgetSpan(
alignment: PlaceholderAlignment.top,
child: PBadge(
text: 'UP',
size: 'small',
stack: 'normal',
fs: 9,
), ),
), if (replies![i].isUp)
buildContent( const WidgetSpan(
context, replies![i], replyReply, replyItem), alignment: PlaceholderAlignment.top,
], child: PBadge(
), text: 'UP',
), size: 'small',
stack: 'normal',
fs: 9,
),
),
buildContent(
context, replies![i], replyReply, replyItem),
],
),
)),
), ),
) )
], ],