Network Tables
This commit is contained in:
parent
b35ca5460d
commit
a0b2287b29
|
|
@ -1,20 +0,0 @@
|
|||
library;
|
||||
|
||||
import "package:nt4/nt4.dart";
|
||||
|
||||
NT4Client ntClient = NT4Client(serverBaseAddress: '10.5.78.2', onConnect: () { print("NT4 Connected"); }, onDisconnect: () { print("NT4 Disconnected"); });
|
||||
|
||||
Map<String, NT4Subscription> nt4Subscriptions = {};
|
||||
|
||||
NT4Subscription subscribe(String topic){
|
||||
|
||||
if (!nt4Subscriptions.containsKey(topic))
|
||||
{
|
||||
NT4Subscription subscrip = ntClient.subscribe(topic, NT4SubscriptionOptions());
|
||||
nt4Subscriptions[topic] = subscrip;
|
||||
}
|
||||
|
||||
return nt4Subscriptions[topic]!;
|
||||
}
|
||||
|
||||
List<NT4Topic> nt4Topics = [];
|
||||
|
|
@ -1,12 +1,16 @@
|
|||
import 'package:helm/ntutils.dart';
|
||||
|
||||
import 'pages/dashboard.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
void main() {
|
||||
runApp(const MyApp());
|
||||
runApp(MyApp());
|
||||
}
|
||||
|
||||
class MyApp extends StatelessWidget {
|
||||
const MyApp({super.key});
|
||||
MyApp({super.key}){
|
||||
NTUtils().connect("10.5.78.2");
|
||||
}
|
||||
|
||||
// This widget is the root of your application.
|
||||
@override
|
||||
|
|
|
|||
|
|
@ -0,0 +1,59 @@
|
|||
import "package:nt4/nt4.dart";
|
||||
|
||||
class NTUtils{
|
||||
|
||||
static final NTUtils _instance = NTUtils._internal();
|
||||
|
||||
factory NTUtils() {
|
||||
return _instance;
|
||||
}
|
||||
|
||||
bool isConnected = false;
|
||||
bool _isAttemptingToConnect = false;
|
||||
String _serverAddress = "";
|
||||
|
||||
NT4Client? ntClient;
|
||||
|
||||
final Map<String, NT4Subscription> _nt4Subscriptions = {};
|
||||
|
||||
void connect(String serverAddress){
|
||||
_serverAddress = serverAddress;
|
||||
_isAttemptingToConnect = true;
|
||||
ntClient = NT4Client(serverBaseAddress: serverAddress, onConnect: () { isConnected = true; _isAttemptingToConnect = false; }, onDisconnect: () { isConnected = false; });
|
||||
}
|
||||
|
||||
String connectionStatus(){
|
||||
if(_isAttemptingToConnect){
|
||||
return "Attempting to connect to $_serverAddress";
|
||||
}
|
||||
if(isConnected){
|
||||
return "Connected";
|
||||
}else{
|
||||
return "Not Connected";
|
||||
}
|
||||
}
|
||||
|
||||
NT4Subscription subscribe(String topic){
|
||||
if (!_nt4Subscriptions.containsKey(topic))
|
||||
{
|
||||
NT4Subscription subscrip = ntClient!.subscribe(topic, NT4SubscriptionOptions());
|
||||
_nt4Subscriptions[topic] = subscrip;
|
||||
}
|
||||
|
||||
return _nt4Subscriptions[topic]!;
|
||||
}
|
||||
|
||||
final Map<String, NT4Topic> _nt4Topics = {};
|
||||
|
||||
NT4Topic getPublicTopic(String topic, String type){
|
||||
if(!_nt4Topics.containsKey(topic)){
|
||||
NT4Topic top = ntClient!.publishNewTopic(topic, type);
|
||||
_nt4Topics[topic] = top;
|
||||
}
|
||||
|
||||
return _nt4Topics[topic]!;
|
||||
}
|
||||
|
||||
NTUtils._internal();
|
||||
}
|
||||
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:helm/ntutils.dart';
|
||||
import 'package:helm/widgets/base_card.dart';
|
||||
import 'package:responsive_grid/responsive_grid.dart';
|
||||
import '../widgets/text_card.dart';
|
||||
|
|
@ -22,7 +23,7 @@ class Dashboard extends StatelessWidget {
|
|||
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
|
||||
// Here we take the value from the MyHomePage object that was created by
|
||||
// the App.build method, and use it to set our appbar title.
|
||||
title: Text("Helm"),
|
||||
title: Text("Helm - ${NTUtils().connectionStatus()}"),
|
||||
),
|
||||
body: ResponsiveGridRow(
|
||||
children: [
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import './base_card.dart';
|
||||
import 'package:nt4/nt4.dart';
|
||||
import '../globals.dart' as glob;
|
||||
import 'package:helm/ntutils.dart';
|
||||
|
||||
class TextCard extends StatefulWidget {
|
||||
const TextCard({
|
||||
|
|
@ -31,8 +31,10 @@ class _TextCardState extends State<TextCard> {
|
|||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
NT4Subscription sub = glob.subscribe(widget.ntTopic!);
|
||||
if(NTUtils().isConnected){
|
||||
NT4Subscription sub = NTUtils().subscribe(widget.ntTopic!);
|
||||
sub.listen( (data) => setVal(data.toString()) );
|
||||
}
|
||||
|
||||
return BaseCard(
|
||||
cardTitle: widget.cardTitle,
|
||||
|
|
|
|||
Loading…
Reference in New Issue