You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.6 KiB
60 lines
1.6 KiB
2 years ago
|
import 'package:flutter/cupertino.dart';
|
||
|
import 'package:flutter/material.dart';
|
||
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||
|
import 'package:info_tren/components/badge/badge_cupertino.dart';
|
||
|
import 'package:info_tren/components/badge/badge_fluent.dart';
|
||
|
import 'package:info_tren/components/badge/badge_material.dart';
|
||
|
import 'package:info_tren/models.dart';
|
||
|
import 'package:info_tren/providers.dart';
|
||
|
|
||
|
class Badge extends ConsumerWidget {
|
||
|
final String text;
|
||
|
final String caption;
|
||
|
final bool isNotScheduled;
|
||
|
final bool isOnTime;
|
||
|
final bool isDelayed;
|
||
|
|
||
|
const Badge({
|
||
|
super.key,
|
||
|
required this.text,
|
||
|
required this.caption,
|
||
|
this.isNotScheduled = false,
|
||
|
this.isOnTime = false,
|
||
|
this.isDelayed = false,
|
||
|
});
|
||
|
|
||
|
@override
|
||
|
Widget build(BuildContext context, WidgetRef ref) {
|
||
|
final uiDesign = ref.watch(uiDesignProvider);
|
||
|
|
||
|
switch (uiDesign) {
|
||
|
case UiDesign.MATERIAL:
|
||
|
return MaterialBadge(
|
||
|
text: text,
|
||
|
caption: caption,
|
||
|
isNotScheduled: isNotScheduled,
|
||
|
isOnTime: isOnTime,
|
||
|
isDelayed: isDelayed,
|
||
|
);
|
||
|
case UiDesign.CUPERTINO:
|
||
|
return CupertinoBadge(
|
||
|
text: text,
|
||
|
caption: caption,
|
||
|
isNotScheduled: isNotScheduled,
|
||
|
isOnTime: isOnTime,
|
||
|
isDelayed: isDelayed,
|
||
|
);
|
||
|
case UiDesign.FLUENT:
|
||
|
return FluentBadge(
|
||
|
text: text,
|
||
|
caption: caption,
|
||
|
isNotScheduled: isNotScheduled,
|
||
|
isOnTime: isOnTime,
|
||
|
isDelayed: isDelayed,
|
||
|
);
|
||
|
default:
|
||
|
throw UnmatchedUiDesignException(uiDesign);
|
||
|
}
|
||
|
}
|
||
|
}
|