diff options
Diffstat (limited to 'lib/widgets')
-rw-r--r-- | lib/widgets/badge_motive_list.dart (renamed from lib/widgets/badge_template_list.dart) | 47 | ||||
-rw-r--r-- | lib/widgets/device_details.dart | 5 |
2 files changed, 34 insertions, 18 deletions
diff --git a/lib/widgets/badge_template_list.dart b/lib/widgets/badge_motive_list.dart index 84cec76..93e79f8 100644 --- a/lib/widgets/badge_template_list.dart +++ b/lib/widgets/badge_motive_list.dart @@ -15,16 +15,15 @@ import 'package:flutter/material.dart'; import 'package:uvok_epaper_badge/model/badge_motive.dart'; +import 'package:uvok_epaper_badge/view_model/badge_motive_view_model.dart'; import 'package:uvok_epaper_badge/widgets/notifying_list_widget.dart'; class BadgeMotiveList extends NotifyingListWidget<BadgeMotive> { - BadgeMotiveList({super.key, required super.items}); + final BadgeMotiveViewModel _motiveVM; - final List<BadgeMotive> templates = [ - BadgeMotive(0, "Foo"), - BadgeMotive(1, "Bar"), - BadgeMotive(2, "Baz"), - ]; + const BadgeMotiveList({super.key, required BadgeMotiveViewModel motiveVM}) + : _motiveVM = motiveVM, + super(items: const []); @override State<StatefulWidget> createState() => _BadgeMotiveListState(); @@ -33,16 +32,32 @@ class BadgeMotiveList extends NotifyingListWidget<BadgeMotive> { class _BadgeMotiveListState extends State<BadgeMotiveList> { @override Widget build(BuildContext context) { - return Expanded( - child: ListView.separated( - itemBuilder: (context, index) { - var item = widget.templates[index]; - return ListTile(title: Text(item.toString())); - }, - separatorBuilder: (context, index) { - return Divider(); - }, - itemCount: widget.templates.length, + return Flexible( + fit: FlexFit.loose, + child: Column( + children: [ + ElevatedButton( + child: Text("Refresh"), + onPressed: () async => await widget._motiveVM.updateMotives(), + ), + Expanded( + child: ListenableBuilder( + listenable: widget._motiveVM, + builder: (context, child) { + return ListView.separated( + itemBuilder: (context, index) { + var item = widget._motiveVM.motives[index]; + return ListTile(title: Text(item.toString())); + }, + separatorBuilder: (context, index) { + return Divider(); + }, + itemCount: widget._motiveVM.motives.length, + ); + }, + ), + ), + ], ), ); } diff --git a/lib/widgets/device_details.dart b/lib/widgets/device_details.dart index 1b6ecf0..f612d96 100644 --- a/lib/widgets/device_details.dart +++ b/lib/widgets/device_details.dart @@ -19,7 +19,8 @@ import 'package:uvok_epaper_badge/model/device/device.dart'; import 'package:flutter/material.dart'; import 'package:logger/logger.dart'; import 'package:uvok_epaper_badge/model/connection/device_connection.dart'; -import 'package:uvok_epaper_badge/widgets/badge_template_list.dart'; +import 'package:uvok_epaper_badge/view_model/badge_motive_view_model.dart'; +import 'package:uvok_epaper_badge/widgets/badge_motive_list.dart'; var logger = Logger(); @@ -71,7 +72,7 @@ class DeviceDetailsState extends State<DeviceDetailsScreen> { children: [ SizedBox(height: 20), Text("Connection state: ${value.toString()}"), - BadgeMotiveList(items: []), + BadgeMotiveList(motiveVM: BadgeMotiveViewModel()), ], ); }, |