diff --git a/lib/home_page.dart b/lib/home_page.dart index aa4e0e4..fa16fda 100644 --- a/lib/home_page.dart +++ b/lib/home_page.dart @@ -1,14 +1,10 @@ import 'package:flutter/material.dart'; import 'package:fmassive/best_page.dart'; -import 'package:fmassive/database.dart'; -import 'package:fmassive/edit_set.dart'; -import 'package:fmassive/main.dart'; import 'package:fmassive/plans_page.dart'; import 'package:fmassive/settings_page.dart'; import 'package:fmassive/timer_page.dart'; import 'package:fmassive/workouts_page.dart'; -import 'package:intl/intl.dart'; -import 'package:moor_flutter/moor_flutter.dart'; +import 'package:fmassive/set_list.dart'; class HomePage extends StatefulWidget { const HomePage({super.key}); @@ -53,7 +49,7 @@ class RootPage extends State { case 'Plans': return PlansPage(search: search); default: - return _HomePageWidget(search: search); + return SetList(search: search); } } @@ -107,92 +103,3 @@ class RootPage extends State { )); } } - -class _HomePageWidget extends StatefulWidget { - final String search; - - const _HomePageWidget({Key? key, required this.search}) : super(key: key); - - @override - createState() => _HomePage(); -} - -class _HomePage extends State<_HomePageWidget> { - bool showSearch = false; - late Stream> stream; - - @override - initState() { - super.initState(); - setStream(); - } - - void setStream() { - stream = (db.select(db.gymSets) - ..where((gymSet) => gymSet.name.contains(widget.search)) - ..limit(10, offset: 0)) - .watch(); - } - - @override - didUpdateWidget(covariant _HomePageWidget oldWidget) { - super.didUpdateWidget(oldWidget); - setStream(); - } - - void toggleSearch() { - setState(() { - showSearch = !showSearch; - }); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - body: StreamBuilder>( - stream: stream, - builder: (context, snapshot) { - final gymSets = snapshot.data; - - if (gymSets == null) - return const Center(child: CircularProgressIndicator()); - - return ListView.builder( - itemCount: gymSets.length, - itemBuilder: (context, index) { - return ListTile( - title: Text(gymSets[index].name), - subtitle: Text( - "${gymSets[index].reps} x ${gymSets[index].weight}kg"), - trailing: Text(DateFormat("yyyy-MM-dd") - .format(DateTime.parse(gymSets[index].created))), - onTap: () async { - await Navigator.push( - context, - MaterialPageRoute( - builder: (context) => EditGymSetPage( - gymSet: gymSets[index].toCompanion(false)), - ), - ); - }); - }, - ); - }), - floatingActionButton: FloatingActionButton( - onPressed: () async { - await Navigator.push( - context, - MaterialPageRoute( - builder: (context) => EditGymSetPage( - gymSet: GymSetsCompanion( - name: const Value(''), - reps: const Value(0), - weight: const Value(0), - image: const Value(''), - created: Value(DateTime.now().toString()))), - ), - ); - }, - child: const Icon(Icons.add))); - } -} diff --git a/lib/set_list.dart b/lib/set_list.dart new file mode 100644 index 0000000..0f84cce --- /dev/null +++ b/lib/set_list.dart @@ -0,0 +1,95 @@ +import 'package:flutter/material.dart'; +import 'package:fmassive/database.dart'; +import 'package:fmassive/edit_set.dart'; +import 'package:fmassive/main.dart'; +import 'package:intl/intl.dart'; +import 'package:moor_flutter/moor_flutter.dart'; + +class SetList extends StatefulWidget { + final String search; + + const SetList({Key? key, required this.search}) : super(key: key); + + @override + createState() => _SetList(); +} + +class _SetList extends State { + bool showSearch = false; + late Stream> stream; + + @override + initState() { + super.initState(); + setStream(); + } + + void setStream() { + stream = (db.select(db.gymSets) + ..where((gymSet) => gymSet.name.contains(widget.search)) + ..limit(10, offset: 0)) + .watch(); + } + + @override + didUpdateWidget(covariant SetList oldWidget) { + super.didUpdateWidget(oldWidget); + setStream(); + } + + void toggleSearch() { + setState(() { + showSearch = !showSearch; + }); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: StreamBuilder>( + stream: stream, + builder: (context, snapshot) { + final gymSets = snapshot.data; + + if (gymSets == null) + return const Center(child: CircularProgressIndicator()); + + return ListView.builder( + itemCount: gymSets.length, + itemBuilder: (context, index) { + return ListTile( + title: Text(gymSets[index].name), + subtitle: Text( + "${gymSets[index].reps} x ${gymSets[index].weight}kg"), + trailing: Text(DateFormat("yyyy-MM-dd") + .format(DateTime.parse(gymSets[index].created))), + onTap: () async { + await Navigator.push( + context, + MaterialPageRoute( + builder: (context) => EditGymSetPage( + gymSet: gymSets[index].toCompanion(false)), + ), + ); + }); + }, + ); + }), + floatingActionButton: FloatingActionButton( + onPressed: () async { + await Navigator.push( + context, + MaterialPageRoute( + builder: (context) => EditGymSetPage( + gymSet: GymSetsCompanion( + name: const Value(''), + reps: const Value(0), + weight: const Value(0), + image: const Value(''), + created: Value(DateTime.now().toString()))), + ), + ); + }, + child: const Icon(Icons.add))); + } +}