From 40794d320d287c13e011078d09b3669af77e120f Mon Sep 17 00:00:00 2001 From: Mica White Date: Sun, 28 Dec 2025 17:45:53 -0500 Subject: Implement about page --- lib/main.dart | 113 ++-------------------------------------------------------- 1 file changed, 2 insertions(+), 111 deletions(-) (limited to 'lib') diff --git a/lib/main.dart b/lib/main.dart index 273f93f..1bfbccc 100755 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,21 +1,8 @@ -import 'dart:async'; - import 'package:flutter/material.dart'; -import 'package:geolocator/geolocator.dart'; - -enum SpeedUnit { milesPerHour, kilometersPerHour } -extension on SpeedUnit { - double fromMetersPerSecond(double metersPerSecond) => switch (this) { - SpeedUnit.kilometersPerHour => metersPerSecond * 3.6, - SpeedUnit.milesPerHour => metersPerSecond * 2.236936, - }; +import 'home.dart'; - String get acronym => switch (this) { - SpeedUnit.kilometersPerHour => 'kmph', - SpeedUnit.milesPerHour => 'mph', - }; -} +enum SpeedUnit { milesPerHour, kilometersPerHour } void main() async { runApp(const MyApp()); @@ -41,99 +28,3 @@ class MyApp extends StatelessWidget { ); } } - -class HomePage extends StatefulWidget { - const HomePage({super.key}); - - @override - State createState() => _HomePageState(); -} - -class _HomePageState extends State { - StreamSubscription? _positionStream; - double _speed = 0.0; - double _speedAccuracy = 0.0; - SpeedUnit _speedUnit = SpeedUnit.milesPerHour; - LocationSettings _locationSettings = LocationSettings(); - - _initPositionStream() { - _positionStream = - Geolocator.getPositionStream( - locationSettings: _locationSettings, - ).listen((Position? position) { - if (position != null) { - setState(() { - _speed = position.speed; - _speedAccuracy = position.speedAccuracy; - }); - } - }); - } - - @override - void initState() { - super.initState(); - - Geolocator.checkPermission() - .then( - (permission) => permission == LocationPermission.denied - ? Geolocator.requestPermission() - : permission, - ) - .then((permission) { - if (![ - LocationPermission.deniedForever, - LocationPermission.denied, - ].contains(permission)) { - _initPositionStream(); - } - }); - } - - @override - void dispose() { - super.dispose(); - _positionStream?.cancel(); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - backgroundColor: Theme.of(context).colorScheme.inversePrimary, - title: Text("Speedometer"), - actions: [ - MenuAnchor( - builder: (context, controller, _child) => IconButton( - icon: Icon(Icons.more_vert), - onPressed: () => - controller.isOpen ? controller.close() : controller.open(), - tooltip: "Navigation menu", - ), - menuChildren: [ - MenuItemButton(child: Text('Settings')), - MenuItemButton(child: Text('About')), - ], - ), - ], - ), - body: Center( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Flex(direction: Axis.horizontal), - Text( - '${_speedUnit.fromMetersPerSecond(_speed).round()} ${_speedUnit.acronym}', - style: Theme.of(context).textTheme.displayLarge, - ), - Text( - '± ${_speedUnit.fromMetersPerSecond(_speedAccuracy).round()} ${_speedUnit.acronym}', - style: Theme.of(context).textTheme.displaySmall, - ), - ], - ), - ), - ); - } -} -- cgit v1.2.3