From 84ae05bc27cd9f5d461e75dfdb258e1a38c434b6 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Sat, 31 Dec 2022 00:34:31 -0500 Subject: Rework Riverpod provider usage Replace the single Riverpod provider for all vehicle signals with separate ones for each required signal used directly in the widgets that require them. This is more in line with recommended Riverpod practice, and should avoids driving full widget tree rebuilds on every signal received. Bug-AGL: SPEC-4660 Signed-off-by: Scott Murray Change-Id: Ibe1ff26f8cd95cbe9cbb477feaf31c9f4919bf6a --- lib/vehicle-signals/onBoarding_page.dart | 61 ++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 lib/vehicle-signals/onBoarding_page.dart (limited to 'lib/vehicle-signals/onBoarding_page.dart') diff --git a/lib/vehicle-signals/onBoarding_page.dart b/lib/vehicle-signals/onBoarding_page.dart new file mode 100644 index 0000000..6009c54 --- /dev/null +++ b/lib/vehicle-signals/onBoarding_page.dart @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: Apache-2.0 +import 'dart:async'; +import 'dart:io'; + +import 'package:dashboard_app/vehicle-signals/vehicle_config.dart'; +import 'package:dashboard_app/vehicle-signals/vehicle_methods.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; + +import '../HomePage.dart'; + +class OnBoardingPage extends ConsumerStatefulWidget { + const OnBoardingPage({Key? key, required this.client, required this.socket}) + : super(key: key); + final WebSocket socket; + final HttpClient client; + + @override + ConsumerState createState() => _OnBoardingPageState(); +} + +class _OnBoardingPageState extends ConsumerState { + late Timer _timer; + + + @override + void initState() { + super.initState(); + VISS.init(widget.socket,ref); + _timer = Timer.periodic(const Duration(seconds: 2), (timer) { + + if (widget.socket.readyState == 3) { + ref.refresh(sockConnectprovider(widget.client)); + } + }); + WidgetsBinding.instance.addPostFrameCallback((timeStamp) { + widget.socket.listen( + (data) { + VISS.parseData(ref, data); + + }, + onError: (e, stk) { + print(e.toString()); + ref.refresh(sockConnectprovider(widget.client)); + }, + ); + }); + } + + @override + void dispose() { + super.dispose(); + _timer.cancel(); + widget.socket.close(786887, "Connection lost with server!"); + } + + @override + Widget build(BuildContext context) { + return const HomePage(); + } +} \ No newline at end of file -- cgit