Commit 12fdd3b

derdilla <82763757+NobodyForNothing@users.noreply.github.com>
2024-06-25 14:47:21
fix repository builder static typing
Signed-off-by: derdilla <82763757+NobodyForNothing@users.noreply.github.com>
1 parent 07e07b3
app/lib/components/consistent_future_builder.dart
@@ -97,7 +97,7 @@ class _ConsistentFutureBuilderState<T>
           return widget.onWaiting ?? Text(localizations?.loading
               ?? 'loading...',);
         case ConnectionState.done:
-          _lastChild = widget.onData(context, snapshot.data as T);
+          _lastChild = widget.onData(context, snapshot.data!);
           return _lastChild!;
       }
     },
app/lib/components/export_warn_banner.dart
@@ -115,7 +115,6 @@ class _ExportWarnBannerState extends State<ExportWarnBanner> {
     ), localizations,);
   }
 
-  // TODO: ensure this is used instead of material banner everywhere in the app.
   Widget _banner(String text, AppLocalizations localizations) => CustomBanner(
       content: Text(text),
       action: TextButton(
app/lib/components/repository_builder.dart
@@ -20,10 +20,10 @@ class RepositoryBuilder<T, R extends Repository<T>> extends StatefulWidget {
   final Widget Function(BuildContext, List<T>) onData;
 
   @override
-  State<RepositoryBuilder> createState() => _RepositoryBuilderState<T, R>();
+  State<RepositoryBuilder<T, R>> createState() => _RepositoryBuilderState<T, R>();
 }
 
-class _RepositoryBuilderState<T, R extends Repository<T>> extends State<RepositoryBuilder> {
+class _RepositoryBuilderState<T, R extends Repository<T>> extends State<RepositoryBuilder<T, R>> {
   late final R _repo;
 
   @override
@@ -46,4 +46,3 @@ class _RepositoryBuilderState<T, R extends Repository<T>> extends State<Reposito
     },
   );
 }
-// TODO: test
app/lib/screens/elements/blood_pressure_builder.dart
@@ -25,9 +25,8 @@ class BloodPressureBuilder extends StatelessWidget {
   Widget build(BuildContext context) =>
     RepositoryBuilder<BloodPressureRecord, BloodPressureRepository>(
       rangeType: rangeType,
-      // TODO: Figure out why type safety isn't possible. (see home_screen for more info)
-      onData: (context, List<dynamic> data) =>
-        onData(context, UnmodifiableListView(data.cast())),
+      onData: (context, List<BloodPressureRecord> data) =>
+        onData(context, UnmodifiableListView(data)),
   );
   
 }
app/lib/screens/home_screen.dart
@@ -60,19 +60,14 @@ class AppHome extends StatelessWidget {
                         rangeType: IntervallStoreManagerLocation.mainPage,
                         onData: (context, records) => RepositoryBuilder<MedicineIntake, MedicineIntakeRepository>(
                           rangeType: IntervallStoreManagerLocation.mainPage,
-                          onData: (BuildContext context, List<dynamic> intakes) => RepositoryBuilder<Note, NoteRepository>(
+                          onData: (BuildContext context, List<MedicineIntake> intakes) => RepositoryBuilder<Note, NoteRepository>(
                             rangeType: IntervallStoreManagerLocation.mainPage,
-                            onData: (BuildContext context, List<dynamic> notes) => MeasurementList(
+                            onData: (BuildContext context, List<Note> notes) => MeasurementList(
                               settings: settings,
                               records: records,
-                              // The following cast is necessary to avoid a type
-                              // error. I'm not sure why this is necessary as the
-                              // generics _should_ be typesafe. The safety of this
-                              // cast has been proven in practice.
-                              // TODO: Figure out why type safety isn't possible.
                               notes: notes.cast(),
                               intakes: intakes.cast(),
-                            ) as Widget,
+                            ),
                           ),
                         ),
                       ),