diff options
| -rwxr-xr-x | lib/main.dart | 113 | ||||
| -rwxr-xr-x | linux/flutter/generated_plugin_registrant.cc | 4 | ||||
| -rwxr-xr-x | linux/flutter/generated_plugins.cmake | 1 | ||||
| -rwxr-xr-x | macos/Flutter/GeneratedPluginRegistrant.swift | 2 | ||||
| -rwxr-xr-x | pubspec.lock | 68 | ||||
| -rwxr-xr-x | pubspec.yaml | 5 | ||||
| -rwxr-xr-x | windows/flutter/generated_plugin_registrant.cc | 3 | ||||
| -rwxr-xr-x | windows/flutter/generated_plugins.cmake | 1 |
8 files changed, 84 insertions, 113 deletions
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<HomePage> createState() => _HomePageState();
-}
-
-class _HomePageState extends State<HomePage> {
- StreamSubscription<Position>? _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,
- ),
- ],
- ),
- ),
- );
- }
-}
diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index e71a16d..f6f23bf 100755 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -6,6 +6,10 @@ #include "generated_plugin_registrant.h" +#include <url_launcher_linux/url_launcher_plugin.h> void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); + url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); } diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 2e1de87..f16b4c3 100755 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + url_launcher_linux ) list(APPEND FLUTTER_FFI_PLUGIN_LIST diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index d7ee0bc..cae8434 100755 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -7,8 +7,10 @@ import Foundation import geolocator_apple import package_info_plus +import url_launcher_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) + UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) } diff --git a/pubspec.lock b/pubspec.lock index 0d6352e..90cad5f 100755 --- a/pubspec.lock +++ b/pubspec.lock @@ -305,7 +305,7 @@ packages: source: hosted version: "1.17.0" package_info_plus: - dependency: transitive + dependency: "direct main" description: name: package_info_plus sha256: "16eee997588c60225bda0488b6dcfac69280a6b7a3cf02c741895dd370a02968" @@ -413,6 +413,70 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.0" + url_launcher: + dependency: "direct main" + description: + name: url_launcher + sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8 + url: "https://pub.dev" + source: hosted + version: "6.3.2" + url_launcher_android: + dependency: transitive + description: + name: url_launcher_android + sha256: "767344bf3063897b5cf0db830e94f904528e6dd50a6dfaf839f0abf509009611" + url: "https://pub.dev" + source: hosted + version: "6.3.28" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + sha256: cfde38aa257dae62ffe79c87fab20165dfdf6988c1d31b58ebf59b9106062aad + url: "https://pub.dev" + source: hosted + version: "6.3.6" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + sha256: d5e14138b3bc193a0f63c10a53c94b91d399df0512b1f29b94a043db7482384a + url: "https://pub.dev" + source: hosted + version: "3.2.2" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + sha256: "368adf46f71ad3c21b8f06614adb38346f193f3a59ba8fe9a2fd74133070ba18" + url: "https://pub.dev" + source: hosted + version: "3.2.5" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + sha256: "712c70ab1b99744ff066053cbe3e80c73332b38d46e5e945c98689b2e66fc15f" + url: "https://pub.dev" + source: hosted + version: "3.1.5" uuid: dependency: transitive description: @@ -479,4 +543,4 @@ packages: version: "3.1.3" sdks: dart: ">=3.9.2 <4.0.0" - flutter: ">=3.19.0" + flutter: ">=3.35.0" diff --git a/pubspec.yaml b/pubspec.yaml index def6cb1..14cd1f1 100755 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -12,6 +12,8 @@ dependencies: flutter:
sdk: flutter
geolocator: ^14.0.2
+ package_info_plus: ^8.3.1
+ url_launcher: ^6.3.2
dev_dependencies:
flutter_launcher_icons: ^0.14.4
@@ -22,6 +24,9 @@ dev_dependencies: flutter:
uses-material-design: true
+ assets:
+ - LICENSE
+
flutter_launcher_icons:
image_path: "assets/speed.png"
android: true
diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 1ece8f2..94586cc 100755 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -7,8 +7,11 @@ #include "generated_plugin_registrant.h" #include <geolocator_windows/geolocator_windows.h> +#include <url_launcher_windows/url_launcher_windows.h> void RegisterPlugins(flutter::PluginRegistry* registry) { GeolocatorWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("GeolocatorWindows")); + UrlLauncherWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("UrlLauncherWindows")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 7f101a7..f0bcafd 100755 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -4,6 +4,7 @@ list(APPEND FLUTTER_PLUGIN_LIST geolocator_windows + url_launcher_windows ) list(APPEND FLUTTER_FFI_PLUGIN_LIST |
