@@ -47,15 +47,15 @@ import 'package:elastic_dashboard/widgets/nt_widgets/single_topic/toggle_button.
4747import 'package:elastic_dashboard/widgets/nt_widgets/single_topic/toggle_switch.dart' ;
4848import 'package:elastic_dashboard/widgets/nt_widgets/single_topic/voltage_view.dart' ;
4949
50- typedef NTModelJsonProvider =
51- NTWidgetModel Function ({
50+ typedef NTModelJsonProvider < T extends NTWidgetModel > =
51+ T Function ({
5252 required Map <String , dynamic > jsonData,
5353 required NTConnection ntConnection,
5454 required SharedPreferences preferences,
5555 });
5656
57- typedef NTModelProvider =
58- NTWidgetModel Function ({
57+ typedef NTModelProvider < T extends NTWidgetModel > =
58+ T Function ({
5959 required NTConnection ntConnection,
6060 required SharedPreferences preferences,
6161 required String topic,
@@ -64,17 +64,17 @@ typedef NTModelProvider =
6464 NT4StructMeta ? ntStructMeta,
6565 });
6666
67- typedef MultiTopicNTModelProvider =
68- MultiTopicNTWidgetModel Function ({
67+ typedef MultiTopicNTModelProvider < T extends MultiTopicNTWidgetModel > =
68+ T Function ({
6969 required NTConnection ntConnection,
7070 required SharedPreferences preferences,
7171 required String topic,
7272 double ? period,
7373 });
7474
75- typedef NTWidgetProvider = NTWidget Function ({Key ? key});
75+ typedef NTWidgetProvider < T extends NTWidget > = T Function ({Key ? key});
7676
77- class NTWidgetBuilder {
77+ class NTWidgetRegistry {
7878 static final Map <String , NTWidgetProvider > _widgetNameBuildMap = {};
7979
8080 static final Map <String , NTModelProvider > _modelNameBuildMap = {};
@@ -89,7 +89,7 @@ class NTWidgetBuilder {
8989
9090 static const double _normalSize = 128.0 ;
9191
92- NTWidgetBuilder ._();
92+ NTWidgetRegistry ._();
9393
9494 static bool _initialized = false ;
9595 static void ensureInitialized () {
@@ -556,120 +556,76 @@ class NTWidgetBuilder {
556556 }
557557
558558 static void registerSingleTopic<
559- ModelType extends NTWidgetModel ,
559+ ModelType extends SingleTopicNTWidgetModel ,
560560 WidgetType extends NTWidget
561561 > ({
562562 required String name,
563- required SingleTopicNTWidgetModel Function ({
564- NT4Type ? dataType,
565- double period,
566- required NT4StructMeta ? ntStructMeta,
567- required NTConnection ntConnection,
568- required SharedPreferences preferences,
569- required String topic,
570- })
571- model,
572- required NTWidgetProvider widget,
573- required NTWidgetModel Function ({
574- required Map <String , dynamic > jsonData,
575- required NTConnection ntConnection,
576- required SharedPreferences preferences,
577- })
578- fromJson,
563+ Set <String >? aliases,
564+ required NTModelProvider <ModelType > model,
565+ required NTWidgetProvider <WidgetType > widget,
566+ required NTModelJsonProvider <ModelType > fromJson,
579567 double ? minWidth,
580568 double ? minHeight,
581569 double ? defaultWidth,
582570 double ? defaultHeight,
583- Set <String >? aliases,
584- }) {
585- registerWithAlias (
586- names: {name, ...? aliases},
587- model:
588- ({
589- NT4Type ? dataType,
590- double ? period,
591- NT4StructMeta ? ntStructMeta,
592- required NTConnection ntConnection,
593- required SharedPreferences preferences,
594- required String topic,
595- }) => model (
596- dataType: dataType,
597- period:
598- period ??
599- (preferences.getDouble (PrefKeys .defaultPeriod) ??
600- Defaults .defaultPeriod),
601- ntStructMeta: ntStructMeta,
602- ntConnection: ntConnection,
603- preferences: preferences,
604- topic: topic,
605- ),
606- widget: widget,
607- fromJson:
608- ({
609- required Map <String , dynamic > jsonData,
610- required NTConnection ntConnection,
611- required SharedPreferences preferences,
612- }) => fromJson (
613- jsonData: jsonData,
614- ntConnection: ntConnection,
615- preferences: preferences,
616- ),
617- minWidth: minWidth,
618- minHeight: minHeight,
619- defaultWidth: defaultWidth,
620- defaultHeight: defaultHeight,
621- );
622- }
571+ }) => registerWithAlias (
572+ names: {name, ...? aliases},
573+ model: model,
574+ widget: widget,
575+ fromJson: fromJson,
576+ minWidth: minWidth,
577+ minHeight: minHeight,
578+ defaultWidth: defaultWidth,
579+ defaultHeight: defaultHeight,
580+ );
623581
624582 static void registerMultiTopic<
625583 ModelType extends MultiTopicNTWidgetModel ,
626584 WidgetType extends NTWidget
627585 > ({
628586 required String name,
629- required MultiTopicNTModelProvider model,
630- required NTWidgetProvider widget,
631- required NTModelJsonProvider fromJson,
587+ Set <String >? aliases,
588+ required MultiTopicNTModelProvider <ModelType > model,
589+ required NTWidgetProvider <WidgetType > widget,
590+ required NTModelJsonProvider <ModelType > fromJson,
632591 double ? minWidth,
633592 double ? minHeight,
634593 double ? defaultWidth,
635594 double ? defaultHeight,
636- Set <String >? aliases,
637- }) {
638- registerWithAlias (
639- names: {name, ...? aliases},
640- model:
641- ({
642- required NTConnection ntConnection,
643- required SharedPreferences preferences,
644- required String topic,
645- double ? period,
646- NT4Type ? dataType,
647- NT4StructMeta ? ntStructMeta,
648- }) => model (
649- ntConnection: ntConnection,
650- preferences: preferences,
651- topic: topic,
652- period: period,
653- ),
654- widget: widget,
655- fromJson: fromJson,
656- minWidth: minWidth,
657- minHeight: minHeight,
658- defaultWidth: defaultWidth,
659- defaultHeight: defaultHeight,
660- );
661- }
595+ }) => registerWithAlias (
596+ names: {name, ...? aliases},
597+ model:
598+ ({
599+ required NTConnection ntConnection,
600+ required SharedPreferences preferences,
601+ required String topic,
602+ double ? period,
603+ NT4Type ? dataType,
604+ NT4StructMeta ? ntStructMeta,
605+ }) => model (
606+ ntConnection: ntConnection,
607+ preferences: preferences,
608+ topic: topic,
609+ period: period,
610+ ),
611+ widget: widget,
612+ fromJson: fromJson,
613+ minWidth: minWidth,
614+ minHeight: minHeight,
615+ defaultWidth: defaultWidth,
616+ defaultHeight: defaultHeight,
617+ );
662618
663619 static void
664620 register <ModelType extends NTWidgetModel , WidgetType extends NTWidget >({
665621 required String name,
666- required NTModelProvider model,
667- required NTWidgetProvider widget,
668- required NTModelJsonProvider fromJson,
669- double ? minWidth,
670- double ? minHeight,
671- double ? defaultWidth,
672- double ? defaultHeight,
622+ required NTModelProvider < ModelType > model,
623+ required NTWidgetProvider < WidgetType > widget,
624+ required NTModelJsonProvider < ModelType > fromJson,
625+ required double ? minWidth,
626+ required double ? minHeight,
627+ required double ? defaultWidth,
628+ required double ? defaultHeight,
673629 }) {
674630 _modelNameBuildMap.addAll ({name: model});
675631 _modelJsonBuildMap.addAll ({name: fromJson});
@@ -690,17 +646,17 @@ class NTWidgetBuilder {
690646 }
691647
692648 static void registerWithAlias<
693- ModelType extends SingleTopicNTWidgetModel ,
649+ ModelType extends NTWidgetModel ,
694650 WidgetType extends NTWidget
695651 > ({
696652 required Set <String > names,
697- required NTModelProvider model,
698- required NTWidgetProvider widget,
699- required NTModelJsonProvider fromJson,
700- double ? minWidth,
701- double ? minHeight,
702- double ? defaultWidth,
703- double ? defaultHeight,
653+ required NTModelProvider < ModelType > model,
654+ required NTWidgetProvider < WidgetType > widget,
655+ required NTModelJsonProvider < ModelType > fromJson,
656+ required double ? minWidth,
657+ required double ? minHeight,
658+ required double ? defaultWidth,
659+ required double ? defaultHeight,
704660 }) {
705661 for (String name in names) {
706662 register (
0 commit comments