82 lines
2.4 KiB
Dart
82 lines
2.4 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:stream_chat_flutter/src/stream_chat_theme.dart';
|
|
import 'package:stream_chat_flutter/src/stream_svg_icon.dart';
|
|
|
|
class OptionListTile extends StatelessWidget {
|
|
final String title;
|
|
final Widget leading;
|
|
final Widget trailing;
|
|
final VoidCallback onTap;
|
|
final Color titleColor;
|
|
final Color tileColor;
|
|
final Color separatorColor;
|
|
final TextStyle titleTextStyle;
|
|
|
|
OptionListTile({
|
|
this.title,
|
|
this.leading,
|
|
this.trailing,
|
|
this.onTap,
|
|
this.titleColor,
|
|
this.tileColor,
|
|
this.separatorColor,
|
|
this.titleTextStyle,
|
|
});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Column(
|
|
children: [
|
|
Container(
|
|
color: separatorColor ??
|
|
StreamChatTheme.of(context).colorTheme.greyGainsboro,
|
|
height: 1.0,
|
|
),
|
|
Material(
|
|
color: tileColor ?? StreamChatTheme.of(context).colorTheme.white,
|
|
child: Container(
|
|
height: 63.0,
|
|
child: InkWell(
|
|
onTap: onTap,
|
|
child: Row(
|
|
children: [
|
|
if (leading != null) Center(child: leading),
|
|
if (leading == null)
|
|
SizedBox(
|
|
width: 16.0,
|
|
),
|
|
Expanded(
|
|
flex: 4,
|
|
child: Text(
|
|
title,
|
|
style: titleTextStyle ??
|
|
(titleColor == null
|
|
? StreamChatTheme.of(context).textTheme.bodyBold
|
|
: StreamChatTheme.of(context)
|
|
.textTheme
|
|
.bodyBold
|
|
.copyWith(
|
|
color: titleColor,
|
|
)),
|
|
),
|
|
),
|
|
Expanded(
|
|
flex: 2,
|
|
child: Padding(
|
|
padding: const EdgeInsets.only(right: 16.0),
|
|
child: Align(
|
|
alignment: Alignment.centerRight,
|
|
child: trailing ?? Container(),
|
|
),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
),
|
|
],
|
|
);
|
|
}
|
|
}
|