relatica/lib/screens/filters_screen.dart

59 wiersze
1.7 KiB
Dart

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../controls/filter_control.dart';
import '../models/filters/timeline_entry_filter.dart';
import '../services/timeline_entry_filter_service.dart';
import '../utils/active_profile_selector.dart';
class FiltersScreen extends StatelessWidget {
const FiltersScreen({super.key});
@override
Widget build(BuildContext context) {
final service = context
.watch<ActiveProfileSelector<TimelineEntryFilterService>>()
.activeEntry
.value;
final filters = service.filters;
return Scaffold(
appBar: AppBar(
title: const Text('Filters'),
actions: [
IconButton(
onPressed: () {
service.upsertFilter(
TimelineEntryFilter.create(
action: TimelineEntryFilterAction.warn, name: 'New Filter'),
);
},
icon: const Icon(Icons.add),
),
],
),
body: SafeArea(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Expanded(
child: ListView.separated(
itemBuilder: (context, index) {
final filter = filters[index];
return FilterControl(
initialEntry: filter,
service: service,
onUpdate: (update) => service.upsertFilter(update),
onRemove: (_) => service.removeFilter(filter),
);
},
separatorBuilder: (_, __) => const Divider(),
itemCount: filters.length),
),
],
),
),
);
}
}