From 4d77bab5a0f698943d1abf74482eecef7cc95f08 Mon Sep 17 00:00:00 2001 From: Lisandro Pérez Meyer Date: Thu, 16 Nov 2023 22:44:34 -0300 Subject: Bug fixes. Fixed Fan mode selection off state bug. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes ICS' internal AGL-48,49,50. Original from Sabin Sajeevan Bug-AGL: SPEC-4971 Change-Id: I66c875551a69a1b53eee2d6e1d3fa725b20ff41b Signed-off-by: Lisandro Pérez Meyer --- lib/presentation/common_widget/custom_top_bar.dart | 10 +- .../screens/hvac/widgets/fan_speed_controls.dart | 3 +- .../screens/media_player/media_content.dart | 48 +++--- .../screens/media_player/media_player.dart | 11 +- .../screens/media_player/play_list_table.dart | 4 +- .../screens/media_player/segmented_buttons.dart | 43 ++--- .../media_player/widgets/media_volume_bar.dart | 80 ++++++--- .../audio_settings/widget/audio_content.dart | 11 +- .../date_time/date_time_screen.dart | 5 +- .../date_time/time/time_screen.dart | 98 ++++++++++- .../settings_screens/wired/wired_screen.dart | 189 ++++++++++++++------- .../screens/weather/hourly_forecast.dart | 18 +- lib/presentation/screens/weather/weather.dart | 4 +- 13 files changed, 360 insertions(+), 164 deletions(-) (limited to 'lib/presentation') diff --git a/lib/presentation/common_widget/custom_top_bar.dart b/lib/presentation/common_widget/custom_top_bar.dart index c268f53..900f8be 100644 --- a/lib/presentation/common_widget/custom_top_bar.dart +++ b/lib/presentation/common_widget/custom_top_bar.dart @@ -19,12 +19,8 @@ class CustomTopBarState extends ConsumerState { final singnalsConnection = ref.watch(signalsProvider.select((sinals) => sinals)); final user = ref.watch(usersProvider.select((user) => user)); - final time2 = - ref.watch(dateTimeStateProvider.select((dateTime) => dateTime)); - - DateFormat dateFormat = DateFormat('HH:mm'); - //var time = dateFormat.format(DateTime.now()); - var time = time2.time; + DateFormat dateFormat = DateFormat('hh:mm a'); + final currentime = ref.watch(currentTimeProvider); return AppBar( elevation: 0, @@ -41,7 +37,7 @@ class CustomTopBarState extends ConsumerState { children: [ RichText( text: TextSpan( - text: '$time ', + text: dateFormat.format(currentime), style: const TextStyle(color: Colors.white, fontSize: 26), children: [ const WidgetSpan( diff --git a/lib/presentation/screens/hvac/widgets/fan_speed_controls.dart b/lib/presentation/screens/hvac/widgets/fan_speed_controls.dart index 00f1181..c373bd8 100644 --- a/lib/presentation/screens/hvac/widgets/fan_speed_controls.dart +++ b/lib/presentation/screens/hvac/widgets/fan_speed_controls.dart @@ -151,13 +151,14 @@ class FanSpeedControlsState extends ConsumerState highlightColor: Colors.transparent, customBorder: const CircleBorder(), onTap: () { - _isPlaying ? null : _controller.isActive = true; setState(() { if (controlProgress >= 0.80) { controlProgress = 0.0; isMainACSelected = false; + _isPlaying = false; animationController.reverse(); } else { + _isPlaying ? null : _controller.isActive = true; isMainACSelected = true; _controller.isActive = true; _isPlaying = true; diff --git a/lib/presentation/screens/media_player/media_content.dart b/lib/presentation/screens/media_player/media_content.dart index 9a0ce19..0625c9c 100644 --- a/lib/presentation/screens/media_player/media_content.dart +++ b/lib/presentation/screens/media_player/media_content.dart @@ -22,10 +22,6 @@ class _MediaPlayerState extends State { PlayListModel(songName: "Hey Ya!", albumName: "Outkast"), PlayListModel(songName: "One, Two, Step", albumName: "Ciara, Missy Elliot"), PlayListModel(songName: "Don’t Trust Me", albumName: "3OH!3"), - PlayListModel(songName: "Feel Good Inc.", albumName: "Gorillaz"), - PlayListModel(songName: "Feel Good Inc.", albumName: "Gorillaz"), - PlayListModel(songName: "Feel Good Inc.", albumName: "Gorillaz"), - PlayListModel(songName: "Feel Good Inc.", albumName: "Gorillaz"), ]; String selectedPlayListSongName = "Feel Good Inc."; @@ -33,29 +29,29 @@ class _MediaPlayerState extends State { Widget build(BuildContext context) { double albumArtSize = 460; return Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - // const PlayerNavigation(), - SegmentedButtons( - navItems: navItems, - selectedNav: selectedNav, - ), - const SizedBox( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + // const PlayerNavigation(), + SegmentedButtons( + navItems: navItems, + selectedNav: selectedNav, + ), + const SizedBox( height: 32, - ), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Image.asset( - "assets/AlbumArtMedia.png", - width: albumArtSize, - height: albumArtSize, - ) - ], - ), - const SizedBox( + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset( + "assets/AlbumArtMedia.png", + width: albumArtSize, + height: albumArtSize, + ) + ], + ), + const SizedBox( height: 40, - ), + ), Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ @@ -75,7 +71,7 @@ class _MediaPlayerState extends State { type: "media", ), ], - ) + ) ], ); } diff --git a/lib/presentation/screens/media_player/media_player.dart b/lib/presentation/screens/media_player/media_player.dart index 9ec31e2..3126ac1 100644 --- a/lib/presentation/screens/media_player/media_player.dart +++ b/lib/presentation/screens/media_player/media_player.dart @@ -79,7 +79,7 @@ class _MediaPlayerBackgroundState extends State { }, ), Padding( - padding: const EdgeInsets.symmetric(horizontal: 144), + padding: const EdgeInsets.symmetric(horizontal: 80), child: SingleChildScrollView( child: selectedNav == "My Media" ? const MediaPlayer() @@ -88,10 +88,11 @@ class _MediaPlayerBackgroundState extends State { : Container(), ), ), - const Padding( - padding: EdgeInsets.symmetric(horizontal: 144, vertical: 23.5), - child: CustomVolumeSlider(), - ), + if (selectedNav == "My Media" || selectedNav == "FM") + const Padding( + padding: EdgeInsets.symmetric(horizontal: 144, vertical: 23.5), + child: CustomVolumeSlider(), + ), ], ), ); diff --git a/lib/presentation/screens/media_player/play_list_table.dart b/lib/presentation/screens/media_player/play_list_table.dart index b17cfca..e5c1292 100644 --- a/lib/presentation/screens/media_player/play_list_table.dart +++ b/lib/presentation/screens/media_player/play_list_table.dart @@ -1,3 +1,4 @@ +import 'package:auto_size_text/auto_size_text.dart'; import 'package:flutter_ics_homescreen/core/utils/helpers.dart'; import 'package:flutter_ics_homescreen/export.dart'; @@ -117,8 +118,9 @@ class _PlayListTableState extends State { children: [ Expanded( flex: 6, - child: Text( + child: AutoSizeText( index.songName, + maxLines: 1, style: TextStyle( color: Colors.white, fontSize: 40, diff --git a/lib/presentation/screens/media_player/segmented_buttons.dart b/lib/presentation/screens/media_player/segmented_buttons.dart index e649be3..5cc1d87 100644 --- a/lib/presentation/screens/media_player/segmented_buttons.dart +++ b/lib/presentation/screens/media_player/segmented_buttons.dart @@ -43,8 +43,6 @@ class _SegmentedButtonsState extends State { child: Row( children: navItems .map((e) => Container( - padding: const EdgeInsets.symmetric( - vertical: 24, horizontal: 32), decoration: BoxDecoration( borderRadius: selectedNav == e ? BorderRadius.circular(40) @@ -53,23 +51,30 @@ class _SegmentedButtonsState extends State { ? AGLDemoColors.backgroundInsetColor : null, ), - child: InkWell( - borderRadius: BorderRadius.circular(40), - onTap: () { - setState(() { - selectedNav = e; - }); - }, - child: Text( - e, - style: TextStyle( - color: selectedNav == e - ? Colors.white - : AGLDemoColors.periwinkleColor, - fontSize: 26, - fontWeight: selectedNav == e - ? FontWeight.w700 - : FontWeight.w500), + child: Material( + color: Colors.transparent, + child: InkWell( + borderRadius: BorderRadius.circular(40), + onTap: () { + setState(() { + selectedNav = e; + }); + }, + child: Padding( + padding: const EdgeInsets.symmetric( + vertical: 24, horizontal: 32), + child: Text( + e, + style: TextStyle( + color: selectedNav == e + ? Colors.white + : AGLDemoColors.periwinkleColor, + fontSize: 26, + fontWeight: selectedNav == e + ? FontWeight.w700 + : FontWeight.w500), + ), + ), ), ), )) diff --git a/lib/presentation/screens/media_player/widgets/media_volume_bar.dart b/lib/presentation/screens/media_player/widgets/media_volume_bar.dart index f8d58e6..2b063b4 100644 --- a/lib/presentation/screens/media_player/widgets/media_volume_bar.dart +++ b/lib/presentation/screens/media_player/widgets/media_volume_bar.dart @@ -53,21 +53,39 @@ class CustomVolumeSliderState extends ConsumerState { child: Row( children: [ Padding( - padding: const EdgeInsets.only(left: 10.0), - child: SizedBox( - width: 50, - child: IconButton( - padding: EdgeInsets.zero, - onPressed: () { + padding: const EdgeInsets.only(left: 20), + child: Material( + color: Colors.transparent, + child: InkWell( + customBorder: const CircleBorder(), + onTap: () { _dercrease(); }, - icon: const Icon( - CustomIcons.vol_min, - color: AGLDemoColors.periwinkleColor, - size: 48, - )), + child: const Padding( + padding: EdgeInsets.all(8.0), + child: Icon( + CustomIcons.vol_min, + color: AGLDemoColors.periwinkleColor, + size: 60, + ))), ), ), + // Padding( + // padding: const EdgeInsets.only(left: 10.0), + // child: SizedBox( + // width: 50, + // child: IconButton( + // padding: EdgeInsets.zero, + // onPressed: () { + // _dercrease(); + // }, + // icon: const Icon( + // CustomIcons.vol_min, + // color: AGLDemoColors.periwinkleColor, + // size: 48, + // )), + // ), + // ), Expanded( child: SliderTheme( data: SliderThemeData( @@ -93,21 +111,39 @@ class CustomVolumeSliderState extends ConsumerState { ), ), Padding( - padding: const EdgeInsets.only(right: 10.0), - child: SizedBox( - width: 60, - child: IconButton( - padding: EdgeInsets.zero, - onPressed: () { + padding: const EdgeInsets.only(right: 20), + child: Material( + color: Colors.transparent, + child: InkWell( + customBorder: const CircleBorder(), + onTap: () { _increase(); }, - icon: const Icon( - CustomIcons.vol_max, - color: AGLDemoColors.periwinkleColor, - size: 48, - )), + child: const Padding( + padding: EdgeInsets.all(8.0), + child: Icon( + CustomIcons.vol_max, + color: AGLDemoColors.periwinkleColor, + size: 60, + ))), ), ), + // Padding( + // padding: const EdgeInsets.only(right: 10.0), + // child: SizedBox( + // width: 60, + // child: IconButton( + // padding: EdgeInsets.zero, + // onPressed: () { + // _increase(); + // }, + // icon: const Icon( + // CustomIcons.vol_max, + // color: AGLDemoColors.periwinkleColor, + // size: 48, + // )), + // ), + // ), ], ), ), diff --git a/lib/presentation/screens/settings/settings_screens/audio_settings/widget/audio_content.dart b/lib/presentation/screens/settings/settings_screens/audio_settings/widget/audio_content.dart index 8fb0437..a08796d 100644 --- a/lib/presentation/screens/settings/settings_screens/audio_settings/widget/audio_content.dart +++ b/lib/presentation/screens/settings/settings_screens/audio_settings/widget/audio_content.dart @@ -17,7 +17,13 @@ class AudioContent extends ConsumerWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ CustomTrebleSlider(), + SizedBox( + height: 120, + ), CustomBassSlider(), + SizedBox( + height: 120, + ), CustomRearFrontSlider(), ], ), @@ -30,9 +36,8 @@ class AudioContent extends ConsumerWidget { text: 'Reset to Default', onTap: () { ref.read(audioStateProvider.notifier).resetToDefaults(); - }, - ), - + }, + ), ), ], ), diff --git a/lib/presentation/screens/settings/settings_screens/date_time/date_time_screen.dart b/lib/presentation/screens/settings/settings_screens/date_time/date_time_screen.dart index 2365ecc..c9a3abf 100644 --- a/lib/presentation/screens/settings/settings_screens/date_time/date_time_screen.dart +++ b/lib/presentation/screens/settings/settings_screens/date_time/date_time_screen.dart @@ -1,4 +1,5 @@ import 'package:flutter_ics_homescreen/export.dart'; +import 'package:intl/intl.dart'; class DateTimePage extends ConsumerWidget { const DateTimePage({super.key}); @@ -7,6 +8,8 @@ class DateTimePage extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { final dateTime = ref.watch(dateTimeStateProvider.select((val) => val)); + DateFormat dateFormat = DateFormat('hh:mm a'); + final currentime = ref.watch(currentTimeProvider); return Scaffold( body: Column( @@ -36,7 +39,7 @@ class DateTimePage extends ConsumerWidget { UnitsTile( image: "assets/Time.svg", title: 'Time', - unitName: dateTime.time, + unitName: dateFormat.format(currentime), hasSwich: true, voidCallback: () { context diff --git a/lib/presentation/screens/settings/settings_screens/date_time/time/time_screen.dart b/lib/presentation/screens/settings/settings_screens/date_time/time/time_screen.dart index 61131b5..de8adb4 100644 --- a/lib/presentation/screens/settings/settings_screens/date_time/time/time_screen.dart +++ b/lib/presentation/screens/settings/settings_screens/date_time/time/time_screen.dart @@ -1,6 +1,7 @@ import 'package:flutter_ics_homescreen/export.dart'; import 'package:flutter/services.dart'; import 'package:intl/intl.dart'; +import 'package:new_virtual_keyboard/virtual_keyboard.dart'; class TimePage extends ConsumerWidget { const TimePage({super.key}); @@ -45,9 +46,22 @@ class TimeScreenWidgetState extends ConsumerState { onPressed({required String type}) { if (type == "confirm") { - ref.read(dateTimeStateProvider.notifier).setTime( - "${hourController.text}:${minuteController.text} $selectedMeridien"); - context.flow().update((state) => AppState.dateTime); + if (hourController.text.isNotEmpty && minuteController.text.isNotEmpty) { + String input = + '${hourController.text}:${minuteController.text} $selectedMeridien'; + DateTime selectedeDatetime = DateFormat.jm().parse(input); + + ref + .read(currentTimeProvider.notifier) + .setCurrentTime(selectedeDatetime); + + // ref.read(dateTimeStateProvider.notifier).setTime( + // "${hourController.text}:${minuteController.text} $selectedMeridien"); + context.flow().update((state) => AppState.dateTime); + } else { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar(content: Text("Time can't be empty!"))); + } } else if (type == "cancel") { context.flow().update((state) => AppState.dateTime); } @@ -55,10 +69,9 @@ class TimeScreenWidgetState extends ConsumerState { @override void initState() { - String time = ref.read(dateTimeStateProvider).time; - if (time == "hh:mm a") { - time = DateFormat('hh:mm a').format(DateTime.now()); - } + DateTime currentTime = ref.read(currentTimeProvider); + String time = DateFormat('hh:mm a').format(currentTime); + List split = time.split(":"); selectedTimeHour = int.parse(split[0]); List splitMeridian = split[1].split(" "); @@ -388,6 +401,74 @@ class _TimeTextFieldState extends State { return KeyEventResult.ignored; } + void showKeyboard() { + var ctx = homeScaffoldKey.currentContext; + showModalBottomSheet( + elevation: 0.0, + backgroundColor: Colors.transparent, + barrierColor: Colors.transparent, + context: ctx!, + builder: (ctx) { + return Container( + height: 479, + width: 1080, + decoration: const BoxDecoration( + color: AGLDemoColors.resolutionBlueColor, + border: Border( + top: BorderSide( + color: Color(0xFF295EF7), + width: 1, + )), + ), + child: VirtualKeyboard( + height: 478, + textColor: AGLDemoColors.periwinkleColor, + fontSize: 40, + // [A-Z, 0-9] + type: VirtualKeyboardType.Numeric, + // Callback for key press event + onKeyPress: (key) { + _onKeyPress(key); + }, + ), + ); + }, + ); + } + + _onKeyPress(VirtualKeyboardKey key) { + String text = controller.text; + + if (key.keyType == VirtualKeyboardKeyType.String) { + if (key.text != ".") { + text = text + key.text!; + int value = int.parse(text); + + if (widget.type == "hour") { + if (value > 11) { + text = "12"; + } + } else if (widget.type == "minute") { + if (value > 58) { + text = "59"; + } + } + } + } else if (key.keyType == VirtualKeyboardKeyType.Action) { + switch (key.action) { + case VirtualKeyboardKeyAction.Backspace: + if (text.isEmpty) return; + text = text.substring(0, text.length - 1); + break; + // case VirtualKeyboardKeyAction.Return: + // text = '$text\n'; + // break; + default: + } + } + controller.text = text; + } + @override Widget build(BuildContext context) { return SizedBox( @@ -397,6 +478,9 @@ class _TimeTextFieldState extends State { return onKeyBoardEvent(event); }), child: TextField( + onTap: () { + showKeyboard(); + }, style: const TextStyle(color: Colors.white, fontSize: 40), decoration: InputDecoration( contentPadding: const EdgeInsets.symmetric(vertical: 23), diff --git a/lib/presentation/screens/settings/settings_screens/wired/wired_screen.dart b/lib/presentation/screens/settings/settings_screens/wired/wired_screen.dart index 916b1b6..35225b8 100644 --- a/lib/presentation/screens/settings/settings_screens/wired/wired_screen.dart +++ b/lib/presentation/screens/settings/settings_screens/wired/wired_screen.dart @@ -1,4 +1,6 @@ +import 'package:flutter_ics_homescreen/core/utils/helpers.dart'; import 'package:flutter_ics_homescreen/export.dart'; +import 'package:get_ip_address/get_ip_address.dart'; class WiredPage extends ConsumerWidget { const WiredPage({super.key}); @@ -6,71 +8,142 @@ class WiredPage extends ConsumerWidget { static Page page() => const MaterialPage(child: WiredPage()); @override Widget build(BuildContext context, WidgetRef ref) { - return Scaffold( - body: Column( - children: [ - CommonTitle( - title: 'Wired', - hasBackButton: true, - onPressed: () { - context.flow().update((state) => AppState.settings); - }, + return const Scaffold(body: WiredScreen()); + } +} + +class WiredScreen extends StatefulWidget { + const WiredScreen({super.key}); + + @override + State createState() => _WiredScreenState(); +} + +class _WiredScreenState extends State { + String deviceIP = "192.168.234.120"; + @override + void initState() { + super.initState(); + getIPAddress(); + } + + getIPAddress() async { + try { + /// Initialize Ip Address + var ipAddress = IpAddress(type: RequestType.text); + + /// Get the IpAddress based on requestType. + dynamic data = await ipAddress.getIpAddress(); + setState(() { + deviceIP = data.toString(); + }); + } on IpAddressException catch (exception) { + /// Handle the exception. + print(exception.message); + } + } + + @override + Widget build(BuildContext context) { + return Column( + children: [ + CommonTitle( + title: 'Wired', + hasBackButton: true, + onPressed: () { + context.flow().update((state) => AppState.settings); + }, + ), + Container( + margin: const EdgeInsets.symmetric(horizontal: 120, vertical: 40), + padding: const EdgeInsets.symmetric(vertical: 17, horizontal: 24), + height: 140, + alignment: Alignment.center, + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.centerLeft, + end: Alignment.centerRight, + stops: const [ + 0, + 0.01, + 0.8 + ], + colors: [ + Colors.white, + AGLDemoColors.neonBlueColor, + AGLDemoColors.neonBlueColor.withOpacity(0.15) + ]), ), - Padding( - padding: const EdgeInsets.symmetric(vertical: 50, horizontal: 80), - child: Container( - height: 130, - decoration: const BoxDecoration( - gradient: LinearGradient( - begin: Alignment.centerLeft, - end: Alignment.centerRight, - stops: [ - 0, - 0.01, - 0.8 + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + // const SizedBox( + // width: 20, + // ), + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + const Text( + 'hernet_0090451v407b_cable', + style: TextStyle(color: Colors.white, fontSize: 40), + ), + Text( + 'connected, $deviceIP', + style: + const TextStyle(color: Colors.white, fontSize: 26), + ), ], - colors: [ - Colors.white, - Colors.blue, - Color.fromARGB(16, 41, 98, 255) - ]), - ), - child: ListTile( - contentPadding: - const EdgeInsets.symmetric(vertical: 41, horizontal: 24), - - title: const Text( - 'hernet_0090451v407b_cable', - style: TextStyle(color: Colors.white, fontSize: 40), - ), - subtitle: const Text( - 'connected, 192.168.234.120', - style: TextStyle(color: Colors.white, fontSize: 26), - ), - trailing: ElevatedButton( - style: ElevatedButton.styleFrom( - backgroundColor: const Color(0xFF1C2D92), - side: const BorderSide(color: Color(0xFF285DF4), width: 2), ), - child: const Padding( - padding: - EdgeInsets.symmetric(vertical: 15.0, horizontal: 0), - child: Text( - - 'Configure', - style: TextStyle( - color: Color(0xFFC1D8FF), - fontSize: 26, + ), + Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(4), + color: AGLDemoColors.buttonFillEnabledColor, + border: Border.all(color: AGLDemoColors.neonBlueColor), + boxShadow: [Helpers.boxDropShadowRegular]), + child: Material( + color: Colors.transparent, + child: InkWell( + onTap: () {}, + borderRadius: BorderRadius.circular(4), + child: const Padding( + padding: + EdgeInsets.symmetric(vertical: 30, horizontal: 40), + child: Text( + "Configure", + style: TextStyle( + color: AGLDemoColors.periwinkleColor, + fontSize: 26), + ), ), ), ), - onPressed: () {}, ), - ), - ), - ), - ], - ), + // ElevatedButton( + // style: ElevatedButton.styleFrom( + // backgroundColor: const Color(0xFF1C2D92), + // side: + // const BorderSide(color: Color(0xFF285DF4), width: 2), + // ), + // child: const Padding( + // padding: + // EdgeInsets.symmetric(vertical: 15.0, horizontal: 0), + // child: Text( + // 'Configure', + // style: TextStyle( + // color: Color(0xFFC1D8FF), + // fontSize: 26, + // ), + // ), + // ), + // onPressed: () {}, + // ), + ]), + ), + ], ); } } diff --git a/lib/presentation/screens/weather/hourly_forecast.dart b/lib/presentation/screens/weather/hourly_forecast.dart index aed8a6c..f6170ec 100644 --- a/lib/presentation/screens/weather/hourly_forecast.dart +++ b/lib/presentation/screens/weather/hourly_forecast.dart @@ -8,24 +8,16 @@ class HourlyForecast extends StatefulWidget { } class _HourlyForecastState extends State { - String selectedForescastTime = "13:00"; + String selectedForescastTime = "01:00 pm"; List foreCastList = [ ForecastModel( - time: "13:00", image: "assets/weatherStat.svg", weather: "29.1°"), + time: "01:00 pm", image: "assets/weatherStat.svg", weather: "29.1°"), ForecastModel( - time: "14:00", image: "assets/weatherStat.svg", weather: "28.1°"), + time: "02:00 pm", image: "assets/weatherStat.svg", weather: "28.1°"), ForecastModel( - time: "15:00", image: "assets/weatherStat.svg", weather: "27.1°"), + time: "03:00 pm", image: "assets/weatherStat.svg", weather: "27.1°"), ForecastModel( - time: "16:00", image: "assets/weatherStat.svg", weather: "29.1°"), - ForecastModel( - time: "13:00", image: "assets/weatherStat.svg", weather: "29.1°"), - ForecastModel( - time: "14:00", image: "assets/weatherStat.svg", weather: "28.1°"), - ForecastModel( - time: "15:00", image: "assets/weatherStat.svg", weather: "27.1°"), - ForecastModel( - time: "16:00", image: "assets/weatherStat.svg", weather: "29.1°"), + time: "04:00 pm", image: "assets/weatherStat.svg", weather: "29.1°"), ]; @override Widget build(BuildContext context) { diff --git a/lib/presentation/screens/weather/weather.dart b/lib/presentation/screens/weather/weather.dart index 7231700..d86bd13 100644 --- a/lib/presentation/screens/weather/weather.dart +++ b/lib/presentation/screens/weather/weather.dart @@ -7,6 +7,8 @@ class WeatherPage extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { double weatherIconSize = MediaQuery.sizeOf(context).width * 0.278; + final unit = + ref.watch(unitStateProvider.select((unit) => unit.temperatureUnit)); return Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ @@ -58,7 +60,7 @@ class WeatherPage extends ConsumerWidget { height: 60, ), Text( - "28.3°C", + "28.3°${unit == TemperatureUnit.celsius ? "C" : "F"}", style: GoogleFonts.brunoAce( color: Colors.white, fontSize: 128), ), -- cgit 1.2.3-korg