Commit 2c7a9a1

derdilla <82763757+NobodyForNothing@users.noreply.github.com>
2024-08-22 11:51:12
simplify IntervalPicker code style
Signed-off-by: derdilla <82763757+NobodyForNothing@users.noreply.github.com>
1 parent 494a0a4
Changed files (1)
app/lib/data_util/display_interval_picker.dart
@@ -17,90 +17,75 @@ class IntervalPicker extends StatelessWidget {
   final IntervallStoreManagerLocation type;
   
   @override
-  Widget build(BuildContext context) => Consumer<IntervallStoreManager>(builder: (context, intervallStoreManager, child) {
+  Widget build(BuildContext context) => Consumer<IntervallStoreManager>(
+    builder: (context, intervallStoreManager, child) {
       final intervall = intervallStoreManager.get(type);
-      final String intervallDisplayText;
-      switch (intervall.stepSize) {
-        case TimeStep.day:
-          intervallDisplayText = DateFormat.yMMMd(AppLocalizations.of(context)!.localeName).format(intervall.currentRange.start);
-          break;
-        case TimeStep.week:
+      final loc = AppLocalizations.of(context)!;
+      final String intervallDisplayText = switch (intervall.stepSize) {
+        TimeStep.day => DateFormat.yMMMd(loc.localeName).format(intervall.currentRange.start),
+        TimeStep.week => (){
           final dayOfYear = int.parse(DateFormat('D').format(intervall.currentRange.start));
           final weekOfYear = ((dayOfYear - intervall.currentRange.start.weekday + 10) / 7).floor();
-          intervallDisplayText = AppLocalizations.of(context)!.weekOfYear(weekOfYear, intervall.currentRange.start.year);
-          break;
-        case TimeStep.month:
-          intervallDisplayText =  DateFormat.yMMM(AppLocalizations.of(context)!.localeName).format(intervall.currentRange.start);
-          break;
-        case TimeStep.year:
-          intervallDisplayText = DateFormat.y(AppLocalizations.of(context)!.localeName).format(intervall.currentRange.start);
-          break;
-        case TimeStep.lifetime:
-          intervallDisplayText =  '-';
-          break;
-        case TimeStep.last7Days:
-        case TimeStep.last30Days:
-        case TimeStep.custom:
-          final f = DateFormat.yMMMd(AppLocalizations.of(context)!.localeName);
-          intervallDisplayText = '${f.format(intervall.currentRange.start)} - ${f.format(intervall.currentRange.end)}';
-          break;
-      }
+          return loc.weekOfYear(weekOfYear, intervall.currentRange.start.year);
+        }(),
+        TimeStep.month => DateFormat.yMMM(loc.localeName).format(intervall.currentRange.start),
+        TimeStep.year => DateFormat.y(loc.localeName).format(intervall.currentRange.start),
+        TimeStep.lifetime => '-',
+        TimeStep.last7Days || TimeStep.last30Days || TimeStep.custom => (){
+          final f = DateFormat.yMMMd(loc.localeName);
+          return '${f.format(intervall.currentRange.start)} - ${f.format(intervall.currentRange.end)}';
+        }(),
+      };
       return Column(
         children: [
-          Text(intervallDisplayText, overflow: TextOverflow.ellipsis,),
-          const SizedBox(
-            height: 2,
-          ),
-          Row(children: [
-            Expanded(
-              flex: 3,
-              child: MaterialButton(
-                onPressed: () {
-                  intervall.moveDataRangeByStep(-1);
-                },
-                child: const Icon(
-                  Icons.chevron_left,
-                  size: 48,
+          Text(intervallDisplayText, overflow: TextOverflow.ellipsis),
+          const SizedBox(height: 2),
+          Row(
+            children: [
+              Expanded(
+                flex: 3,
+                child: MaterialButton(
+                  onPressed: () => intervall.moveDataRangeByStep(-1),
+                  child: const Icon(Icons.chevron_left, size: 48),
                 ),
               ),
-            ),
-            Expanded(
-              flex: 4,
-              child: DropdownButton<TimeStep>(
-                value: intervall.stepSize,
-                isExpanded: true,
-                onChanged: (TimeStep? value) async {
-                  if (value == TimeStep.custom) {
-                    final res = await showDateRangePicker(
-                      context: context,
-                      firstDate: DateTime.fromMillisecondsSinceEpoch(1),
-                      lastDate: DateTime.now(),
-                    );
-                    if (res != null) {
-                      intervall.changeStepSize(value!);
-                      intervall.currentRange = res.dateRange;
+              Expanded(
+                flex: 4,
+                child: DropdownButton<TimeStep>(
+                  value: intervall.stepSize,
+                  isExpanded: true,
+                  onChanged: (TimeStep? value) async {
+                    if (value == TimeStep.custom) {
+                      final res = await showDateRangePicker(
+                        context: context,
+                        firstDate: DateTime.fromMillisecondsSinceEpoch(1),
+                        lastDate: DateTime.now(),
+                      );
+                      if (res != null) {
+                        intervall.changeStepSize(value!);
+                        intervall.currentRange = res.dateRange;
+                      }
+                    } else if (value != null) {
+                      intervall.changeStepSize(value);
                     }
-                  } else if (value != null) {
-                    intervall.changeStepSize(value);
-                  }
-                },
-                items: TimeStep.options.map<DropdownMenuItem<TimeStep>>((v) => DropdownMenuItem(value: v, child: Text(v.getName(AppLocalizations.of(context)!)))).toList(),
+                  },
+                  items: [
+                    for (final e in TimeStep.options)
+                      DropdownMenuItem(value: e, child: Text(e.getName(loc))),
+                  ]
+                ),
               ),
-            ),
-            Expanded(
-              flex: 3,
-              child: MaterialButton(
-                onPressed: () {
-                  intervall.moveDataRangeByStep(1);
-                },
-                child: const Icon(
-                  Icons.chevron_right,
-                  size: 48,
+              Expanded(
+                flex: 3,
+                child: MaterialButton(
+                  onPressed: () => intervall.moveDataRangeByStep(1),
+                  child: const Icon(Icons.chevron_right, size: 48),
                 ),
               ),
-            ),
-          ],),
+            ],
+          ),
         ],
       );
-    },);
+    },
+  );
 }