import 'package:diameter/models/log_event.dart'; import 'package:diameter/screens/log/log_entry/log_event_detail.dart'; import 'package:diameter/screens/log/log_entry/log_event_list.dart'; import 'package:flutter/material.dart'; import 'package:diameter/navigation.dart'; class ActiveEventListScreen extends StatefulWidget { static const String routeName = '/active-log-events'; const ActiveEventListScreen({Key? key}) : super(key: key); @override _ActiveEventListScreenState createState() => _ActiveEventListScreenState(); } class _ActiveEventListScreenState extends State { List _activeEvents = []; @override void initState() { super.initState(); reload(); } void reload({String? message}) { setState(() { _activeEvents = LogEvent.getAllActiveForTime(DateTime.now()); }); setState(() { if (message != null) { var snackBar = SnackBar( content: Text(message), duration: const Duration(seconds: 2), ); ScaffoldMessenger.of(context) ..removeCurrentSnackBar() ..showSnackBar(snackBar); } }); } void handleAddNewEvent() async { Navigator.push( context, MaterialPageRoute( builder: (context) { return const LogEventDetailScreen(); }, ), ).then((message) => reload(message: message)); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Active Events'), actions: [ IconButton(onPressed: reload, icon: const Icon(Icons.refresh)) ], ), drawer: const Navigation(currentLocation: ActiveEventListScreen.routeName), body: LogEventListScreen(activeEvents: _activeEvents), floatingActionButton: FloatingActionButton( onPressed: handleAddNewEvent, child: const Icon(Icons.add), ), ); } }