import 'package:flutter/material.dart'; import 'package:fmassive/edit_set.dart'; import 'package:fmassive/gym_set.dart'; class HomePage extends StatelessWidget { HomePage({super.key}); final List> routes = [ {'title': 'Home', 'icon': Icons.home}, {'title': 'Plans', 'icon': Icons.calendar_today}, {'title': 'Best', 'icon': Icons.star}, {'title': 'Workouts', 'icon': Icons.fitness_center}, {'title': 'Timer', 'icon': Icons.timer}, {'title': 'Settings', 'icon': Icons.settings}, ]; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(routes[0]['title']), ), drawer: Drawer( child: ListView.builder( itemCount: routes.length, itemBuilder: (context, index) { return ListTile( leading: Icon(routes[index]['icon']), title: Text(routes[index]['title']), onTap: () { Navigator.pop(context); Navigator.pushNamed( context, '/${routes[index]['title'].toLowerCase()}'); }, ); }, ), ), body: const Center( child: GymSetPage(), ), ); } } class GymSetPage extends StatefulWidget { const GymSetPage({Key? key}) : super(key: key); @override createState() => GymSetPageState(); } class GymSetPageState extends State { late GymSetDatabaseHelper db; List sets = []; List searchResults = []; final TextEditingController searchController = TextEditingController(); void search(String searchQuery) { List results = []; if (searchQuery.isEmpty) { results = sets; } else { for (int i = 0; i < sets.length; i++) { if (sets[i].reps.toString().contains(searchQuery) || sets[i].weight.toString().contains(searchQuery) || sets[i].created.toString().contains(searchQuery) || sets[i].name.contains(searchQuery)) { results.add(sets[i]); } } } setState(() { searchResults = results; }); } void reset() async { print('Resetting...'); final data = await db.getAll(); setState(() { sets = data; searchResults = data; }); } @override void initState() { super.initState(); db = GymSetDatabaseHelper.instance; reset(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: TextField( controller: searchController, decoration: const InputDecoration( hintText: 'Search Gym Sets', border: InputBorder.none, ), onChanged: (searchQuery) { search(searchQuery); }, ), ), body: ListView.builder( itemCount: searchResults.length, itemBuilder: (context, index) { return ListTile( title: Text( '${searchResults[index].name}: ${searchResults[index].reps}x${searchResults[index].weight}kg'), onTap: () async { await Navigator.push( context, MaterialPageRoute( builder: (context) => EditGymSetPage(gymSet: searchResults[index]), ), ); reset(); }); }, ), floatingActionButton: FloatingActionButton( onPressed: () async { await Navigator.push( context, MaterialPageRoute( builder: (context) => EditGymSetPage( gymSet: GymSet( name: '', reps: 0, weight: 0, created: DateTime.now())), ), ); reset(); }, child: const Icon(Icons.add))); } }