Initial commit

This commit is contained in:
Anton Stubenbord
2022-10-30 14:15:37 +01:00
commit cb797df7d2
272 changed files with 16278 additions and 0 deletions

View File

@@ -0,0 +1,52 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_paperless_mobile/core/bloc/label_cubit.dart';
import 'package:flutter_paperless_mobile/features/documents/model/document_filter.dart';
import 'package:flutter_paperless_mobile/features/labels/model/label.model.dart';
import 'package:flutter_paperless_mobile/features/labels/view/widgets/label_item.dart';
class LabelTabView<T extends Label> extends StatelessWidget {
final LabelCubit<T> cubit;
final DocumentFilter Function(Label) filterBuilder;
final void Function(T) onOpenEditPage;
/// Displayed as the subtitle of the [ListTile]
final Widget Function(T)? contentBuilder;
/// Displayed as the leading widget of the [ListTile]
final Widget Function(T)? leadingBuilder;
const LabelTabView({
super.key,
required this.cubit,
required this.filterBuilder,
this.contentBuilder,
this.leadingBuilder,
required this.onOpenEditPage,
});
@override
Widget build(BuildContext context) {
return BlocBuilder<Cubit<Map<int, T>>, Map<int, T>>(
bloc: cubit,
builder: (context, state) {
final labels = state.values.toList()..sort();
return RefreshIndicator(
onRefresh: cubit.initialize,
child: ListView(
children: labels
.map((l) => LabelItem<T>(
name: l.name,
content: contentBuilder?.call(l) ?? Text(l.match ?? '-'),
onOpenEditPage: onOpenEditPage,
filterBuilder: filterBuilder,
leading: leadingBuilder?.call(l),
label: l,
))
.toList(),
),
);
},
);
}
}