healthrian_eit_support 0.0.3
healthrian_eit_support: ^0.0.3 copied to clipboard
Healthrian eit support with OpenEIT
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:healthrian_eit_support/healthrian_eit_support.dart';
import 'demo_mf_eit.dart';
import 'demo_sim_data.dart';
import 'demo_simdata_sandbox.dart';
import 'demo_uart.dart';
import 'demo_uart_separate.dart';
import 'demo_uart_standalone.dart';
import 'demo_visualizer.dart';
import 'demo_stream_verification.dart';
import 'demo_controller_pipeline.dart';
final _onlineServer = OnlineServer();
void main() {
WidgetsFlutterBinding.ensureInitialized();
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final _pageController = PageController();
Future<void> _initializeOnlineServer() async {
await _onlineServer.decompress();
await _onlineServer.run();
}
@override
void initState() {
super.initState();
_initializeOnlineServer();
}
@override
void dispose() {
_onlineServer.kill();
_pageController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
final pages = const [
DemoUartStandalone(),
DemoSimdataSandbox(),
DemoMfEit(),
DemoStreamVerification(),
DemoControllerPipeline(),
DemoUartSeparate(),
DemoVisualizer(),
DemoSimData(),
DemoUart(),
];
final tooltips = [
'UART Standalone Test',
'EIT Sim Sandbox',
'mfEIT Multi-Frequency',
'Stream Verification',
'Controller Pipeline',
'UART Separate',
'Visualizer All',
'Simulation Data All',
'UART All',
];
return MaterialApp(
title: 'healthrian_eit_example',
debugShowCheckedModeBanner: false,
home: Scaffold(
body: PageView(
scrollDirection: Axis.horizontal,
controller: _pageController,
children: pages,
),
floatingActionButton: ListenableBuilder(
listenable: _pageController,
builder: (context, child) {
double currentPage = 0;
if (_pageController.hasClients) {
currentPage = _pageController.page ?? 0;
}
return Row(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: [
for (int i = 0; i < pages.length; i++)
Padding(
padding: const EdgeInsets.symmetric(horizontal: 8.0),
child: Tooltip(
message: tooltips[i],
child: GestureDetector(
onTap: () => _pageController.jumpToPage(i),
child: AnimatedContainer(
duration: const Duration(milliseconds: 300),
width: (currentPage - i).abs() < 0.5 ? 32 : 16,
height: 16,
decoration: BoxDecoration(
color: (currentPage - i).abs() < 0.5
? Colors.blue
: Colors.grey,
borderRadius: BorderRadius.circular(8),
),
),
),
),
),
],
);
},
),
floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat,
),
);
}
}