You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.7 KiB
58 lines
1.7 KiB
import 'package:flutter/cupertino.dart'; |
|
|
|
class CupertinoListTile extends StatelessWidget { |
|
final Widget? leading; |
|
final Widget? title; |
|
final Widget? subtitle; |
|
final Widget? trailing; |
|
final void Function()? onTap; |
|
|
|
const CupertinoListTile({ super.key, this.leading, this.title, this.subtitle, this.trailing, this.onTap, }); |
|
|
|
@override |
|
Widget build(BuildContext context) { |
|
return GestureDetector( |
|
onTap: onTap, |
|
behavior: HitTestBehavior.opaque, |
|
child: Row( |
|
mainAxisSize: MainAxisSize.max, |
|
children: [ |
|
if (leading != null) |
|
Padding( |
|
padding: const EdgeInsets.all(8.0), |
|
child: leading!, |
|
), |
|
Expanded( |
|
child: Padding( |
|
padding: const EdgeInsets.all(8.0), |
|
child: Column( |
|
mainAxisSize: MainAxisSize.min, |
|
crossAxisAlignment: CrossAxisAlignment.start, |
|
children: [ |
|
if (title != null) |
|
title!, |
|
if (subtitle != null) |
|
CupertinoTheme( |
|
data: CupertinoTheme.of(context).copyWith( |
|
textTheme: CupertinoTextThemeData( |
|
textStyle: TextStyle( |
|
fontSize: CupertinoTheme.of(context).textTheme.textStyle.fontSize! - 2, |
|
) |
|
) |
|
), |
|
child: subtitle!, |
|
), |
|
], |
|
), |
|
), |
|
), |
|
if (trailing != null) |
|
Padding( |
|
padding: const EdgeInsets.all(8.0), |
|
child: trailing!, |
|
), |
|
], |
|
), |
|
); |
|
} |
|
} |