import 'package:dashboard/hal/ads1256.dart'; import 'package:dashboard/hardware/heartbeatmice.dart'; //import 'package:flutter/cupertino.dart'; import 'ui/plot.dart'; import 'package:flutter/material.dart'; import 'util/mouse_cursor.dart'; import 'package:logging/logging.dart'; void main() { Logger.root.level = Level.ALL; Logger.root.onRecord.listen((record){ print('[${record.time.hour}:${record.time.minute}:${record.time.second}][${record.level.name}][${record.loggerName}] ${record.message}'); }); runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); // This widget is the root of your application. @override Widget build(BuildContext context) { return SoftwareMouseCursor( child : MaterialApp( title: 'Heart Beat Mice', theme: ThemeData( colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), useMaterial3: true, ), home: const MyHomePage(title: 'Heart Beat Mice Coba'), ) ); } } class MyHomePage extends StatefulWidget { const MyHomePage({super.key, required this.title}); final String title; @override State createState() => _MyHomePageState(); } class _MyHomePageState extends State { late HeartBeatMice device; Logger log = Logger("_MyHomePageState"); @override void initState() { super.initState(); device = HeartBeatMice(); device.init(); } @override void dispose() { super.dispose(); device.dispose(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( backgroundColor: Theme.of(context).colorScheme.inversePrimary, title: Text(widget.title), ), body: ListView.builder( itemCount: 10, itemBuilder: (BuildContext context, int index){ log.info("build ListView index : $index"); return Center( child: Column ( children: [ const SizedBox(height: 10,), SizedBox ( height: 100, width: MediaQuery.of(context).size.width-100, child : LayoutBuilder(builder: (BuildContext context, BoxConstraints constraints) { double height = constraints.maxHeight; double width = constraints.maxWidth; var i = index; return Plot( title: "analog $i", aspectRatio: (height/width), maxTimeSeconds: 10, sampleTimeMillis: 2, readAnalog: () async { return await device.readAnalog(i).toVolt(); }, ); }) ), const SizedBox(height: 10,), ], ) ); }) ); } }