From c65b3e387181e6b3ff0579743e4f3723336b212c Mon Sep 17 00:00:00 2001 From: Ojima Abraham Date: Fri, 15 Mar 2024 15:38:15 -0400 Subject: [PATCH] RSDK-6116: Mobile app should auto refresh board's analog readings (#185) * RSDK-6116: Mobile app should auto refresh board's analog readings * Cancel timer when widget is destroyed * Made refreshInterval settable by user * Added docstring --- lib/widgets/resources/board.dart | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/lib/widgets/resources/board.dart b/lib/widgets/resources/board.dart index eb9ec988d77..a6887ba699b 100644 --- a/lib/widgets/resources/board.dart +++ b/lib/widgets/resources/board.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:viam_sdk/viam_sdk.dart'; @@ -12,9 +14,14 @@ class ViamBoardWidget extends StatefulWidget { /// The [Board] final Board board; + /// The refresh interval + /// This field determines how frequently the user wants to auto refresh the board's status readings. + final Duration refreshInterval; + const ViamBoardWidget({ super.key, required this.board, + this.refreshInterval = const Duration(seconds: 1), }); @override @@ -34,6 +41,8 @@ class _ViamBoardWidgetState extends State { final _pwmFreqFormKey = GlobalKey(); int pwmFrequency = 0; + Timer? timer; + BoardStatus status = const BoardStatus({}, {}); Future _fetchStatus() async { @@ -43,10 +52,27 @@ class _ViamBoardWidgetState extends State { }); } + void refresh() { + _fetchStatus(); + } + + void _createTimer() { + timer = Timer.periodic(widget.refreshInterval, (_) { + refresh(); + }); + } + @override void initState() { super.initState(); _fetchStatus(); + _createTimer(); + } + + @override + void dispose() { + timer?.cancel(); + super.dispose(); } void _dismissKeyboard() {