summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xlib/main.dart113
-rwxr-xr-xlinux/flutter/generated_plugin_registrant.cc4
-rwxr-xr-xlinux/flutter/generated_plugins.cmake1
-rwxr-xr-xmacos/Flutter/GeneratedPluginRegistrant.swift2
-rwxr-xr-xpubspec.lock68
-rwxr-xr-xpubspec.yaml5
-rwxr-xr-xwindows/flutter/generated_plugin_registrant.cc3
-rwxr-xr-xwindows/flutter/generated_plugins.cmake1
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