From 51e10ba22051fe039c15a9f6bb94caef61f82c06 Mon Sep 17 00:00:00 2001 From: Konstantin Kollar Date: Wed, 7 Sep 2022 13:39:35 +0200 Subject: [PATCH] WIP: Rain Radar Controllable --- .vscode/launch.json | 3 +- lib/components/main_menu.dart | 15 ++++++++++ lib/screens/rain_radar.dart | 53 +++++++++++++++++++++++++++++++++++ pubspec.lock | 7 +++++ pubspec.yaml | 1 + 5 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 lib/screens/rain_radar.dart diff --git a/.vscode/launch.json b/.vscode/launch.json index 6edd267..89b0375 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -8,7 +8,8 @@ "name": "wetter-simulator", "request": "launch", "type": "dart", - "deviceId": "emulator-5554" + "deviceId": "emulator-5554", + "args": ["--no-sound-null-safety"] }, { "name": "wetter-handy", diff --git a/lib/components/main_menu.dart b/lib/components/main_menu.dart index 4d54faf..1ddf3d6 100644 --- a/lib/components/main_menu.dart +++ b/lib/components/main_menu.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:wetter/screens/locations.dart'; +import 'package:wetter/screens/rain_radar.dart'; import 'package:wetter/screens/settings.dart'; class NavBar extends StatelessWidget { @@ -38,6 +39,20 @@ class NavBar extends StatelessWidget { }, ); }), + ), + ListTile( + leading: const Icon(Icons.radar), + title: const Text("Rain Radar"), + onTap: (() { + Navigator.push( + context, + MaterialPageRoute(builder: (context) => const RainRadar()), + ).then( + (value) { + refreshPageFrom(); + }, + ); + }), ) ], ), diff --git a/lib/screens/rain_radar.dart b/lib/screens/rain_radar.dart new file mode 100644 index 0000000..6b7f208 --- /dev/null +++ b/lib/screens/rain_radar.dart @@ -0,0 +1,53 @@ +import 'package:flutter/material.dart'; +// ignore: import_of_legacy_library_into_null_safe +import 'package:flutter_gifimage/flutter_gifimage.dart'; + +class RainRadar extends StatefulWidget { + const RainRadar({Key? key}) : super(key: key); + + @override + State createState() => _RainRadarState(); +} + +class _RainRadarState extends State + with SingleTickerProviderStateMixin { + late GifController controller; + + @override + void initState() { + super.initState(); + controller = GifController(vsync: this); + WidgetsBinding.instance.addPostFrameCallback((_) { + controller.repeat(min: 0, max: 24, period: const Duration(seconds: 10)); + }); + } + + @override + Widget build(BuildContext context) { + controller.stop(); + return Scaffold( + appBar: AppBar( + title: const Text('Rain Radar'), + ), + body: Column(children: [ + GifImage( + controller: controller, + image: const NetworkImage( + 'https://www.dwd.de/DWD/wetter/radar/radarvhs.gif')), + ElevatedButton( + onPressed: () { + controller.stop(); + }, + child: const Text("Stop")), + Slider( + onChanged: (v) { + controller.value = v; + setState(() {}); + }, + max: 24, + min: 0, + value: controller.value, + ) + ])); + } +} diff --git a/pubspec.lock b/pubspec.lock index bf871bc..ca7ca55 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -76,6 +76,13 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_gifimage: + dependency: "direct main" + description: + name: flutter_gifimage + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" flutter_lints: dependency: "direct dev" description: diff --git a/pubspec.yaml b/pubspec.yaml index 8b978a1..bbf622d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -38,6 +38,7 @@ dependencies: weather_icons: ^3.0.0 intl: ^0.17.0 shared_preferences: ^2.0.15 + flutter_gifimage: ^1.0.1 dev_dependencies: flutter_test: