Commit 2c7a9a1
Changed files (1)
app
lib
data_util
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),
),
),
- ),
- ],),
+ ],
+ ),
],
);
- },);
+ },
+ );
}