45 lines
1.1 KiB
Dart
45 lines
1.1 KiB
Dart
|
import 'package:flutter/material.dart';
|
||
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||
|
|
||
|
class ListItem extends ConsumerWidget {
|
||
|
const ListItem({
|
||
|
required this.title,
|
||
|
this.subtitle,
|
||
|
this.icon,
|
||
|
this.color,
|
||
|
this.deleteButton = false,
|
||
|
this.itemId,
|
||
|
super.key,
|
||
|
});
|
||
|
|
||
|
final Widget title;
|
||
|
final Widget? subtitle;
|
||
|
final Widget? icon;
|
||
|
final Color? color;
|
||
|
final bool deleteButton;
|
||
|
final int? itemId;
|
||
|
|
||
|
@override
|
||
|
Widget build(final BuildContext context, final WidgetRef ref) => Container(
|
||
|
margin: const EdgeInsets.symmetric(
|
||
|
vertical: 4,
|
||
|
horizontal: 16,
|
||
|
),
|
||
|
decoration: BoxDecoration(
|
||
|
color: color,
|
||
|
),
|
||
|
child: ListTile(
|
||
|
leading: icon,
|
||
|
title: title,
|
||
|
subtitle: subtitle,
|
||
|
trailing: deleteButton
|
||
|
? IconButton(
|
||
|
icon: const Icon(Icons.delete),
|
||
|
onPressed: () =>
|
||
|
ref.read(listProvider.notifier).remove(itemId),
|
||
|
)
|
||
|
: null,
|
||
|
),
|
||
|
);
|
||
|
}
|