import 'package:antd_mobile/antd_mobile.dart'; import 'package:flutter/widgets.dart'; import 'package:git_touch/models/theme.dart'; import 'package:git_touch/widgets/empty.dart'; import 'package:provider/provider.dart'; class ListGroup extends StatelessWidget { const ListGroup({ required this.title, required this.items, required this.itemBuilder, this.padding = const EdgeInsets.only(left: 10, right: 10, bottom: 10), }); final Widget title; final List items; final Widget Function(T item, int index) itemBuilder; final EdgeInsetsGeometry padding; Widget _buildItem(BuildContext context, MapEntry entry) { final theme = Provider.of(context); return Container( decoration: BoxDecoration( border: Border(top: BorderSide(color: AntTheme.of(context).colorBorder)), ), child: itemBuilder(entry.value, entry.key), ); } @override Widget build(BuildContext context) { final theme = Provider.of(context); return Container( padding: padding, child: Container( decoration: BoxDecoration( border: Border.all(color: AntTheme.of(context).colorBorder), borderRadius: const BorderRadius.all(Radius.circular(3)), ), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ Container(padding: const EdgeInsets.all(8), child: title), items.isEmpty ? EmptyWidget() : Column( children: items .asMap() .entries .map((e) => _buildItem(context, e)) .toList()) ], ), ), ); } }