Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dfca094c95 | ||
|
|
e643e797c9 | ||
|
|
280e748bb7 | ||
|
|
a19447b8a0 |
No files matched your search
+3
-1
@@ -153,4 +153,6 @@ google-services.json
|
|||||||
# Android Profiling
|
# Android Profiling
|
||||||
*.hprof
|
*.hprof
|
||||||
|
|
||||||
linux-bundle.zip
|
# Staged build files for distribution.
|
||||||
|
*.linux-bundle.zip
|
||||||
|
release/*
|
||||||
@@ -19,7 +19,7 @@ pluginManagement {
|
|||||||
plugins {
|
plugins {
|
||||||
id("dev.flutter.flutter-plugin-loader") version "1.0.0"
|
id("dev.flutter.flutter-plugin-loader") version "1.0.0"
|
||||||
|
|
||||||
id("com.android.application") version "9.4.0" apply false
|
id("com.android.application") version "9.4.1" apply false
|
||||||
//id("com.android.application") version "9.0.1" apply false
|
//id("com.android.application") version "9.0.1" apply false
|
||||||
|
|
||||||
// This will need removed in Gradle/AGP 9. JK - needs to exist otherwiese:
|
// This will need removed in Gradle/AGP 9. JK - needs to exist otherwiese:
|
||||||
|
|||||||
+59
-12
@@ -1,23 +1,70 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# 20260913 - Hyperling
|
# 20260913 - Hyperling
|
||||||
# Build the project and add them to a releases folder.
|
# Build the project and add the output to a releases folder.
|
||||||
|
|
||||||
# TODO
|
## Setup ##
|
||||||
# create dir name release-${version} to store these in,
|
|
||||||
|
|
||||||
echo -e "\nCleaning..."
|
DIR="$(cd "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
|
||||||
|
|
||||||
|
## Functions ##
|
||||||
|
|
||||||
|
function log {
|
||||||
|
echo -e "\n $@ \n"
|
||||||
|
}
|
||||||
|
|
||||||
|
function clean_flutter {
|
||||||
|
log "Cleaning..."
|
||||||
flutter clean
|
flutter clean
|
||||||
|
}
|
||||||
|
|
||||||
echo -e "\nBuilding Linux..."
|
## Variables ##
|
||||||
|
|
||||||
|
app_details="$DIR/pubspec.yaml"
|
||||||
|
|
||||||
|
name=""
|
||||||
|
for i in `grep name $app_details`; do
|
||||||
|
name="$i"
|
||||||
|
done
|
||||||
|
name="${name// /_}"
|
||||||
|
|
||||||
|
version=""
|
||||||
|
for i in `grep version $app_details`; do
|
||||||
|
version="$i"
|
||||||
|
done
|
||||||
|
version="v${version// /_}"
|
||||||
|
|
||||||
|
if [[ -z $name || -z $version ]]; then
|
||||||
|
echo "ERROR: Could not retrieve name or version. name='$name' version='$version'"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
RELEASE="release/$name-$version"
|
||||||
|
echo "Running for '$RELEASE'."
|
||||||
|
|
||||||
|
## Main ##
|
||||||
|
|
||||||
|
clean_flutter
|
||||||
|
|
||||||
|
log "Building Linux Bundle..."
|
||||||
flutter build linux
|
flutter build linux
|
||||||
zip -r release/linux-bundle.zip build/linux/x64/release/bundle/*
|
|
||||||
|
|
||||||
echo -e "\nCleaning..."
|
log "Saving Linux Bundle..."
|
||||||
flutter clean
|
filename=$RELEASE.linux-bundle.zip
|
||||||
|
if [[ -e $filename ]]; then
|
||||||
|
rm -v $filename
|
||||||
|
fi
|
||||||
|
zip -r $filename build/linux/x64/release/bundle/*
|
||||||
|
ls -sh $filename
|
||||||
|
|
||||||
echo -e "\nBuilding APK..."
|
clean_flutter
|
||||||
|
|
||||||
|
log "Building APK..."
|
||||||
flutter build apk
|
flutter build apk
|
||||||
cp -v build/app/outputs/flutter-apk/app-release.apk release/
|
|
||||||
|
|
||||||
echo -e "\nCleaning..."
|
log "Saving APK..."
|
||||||
flutter clean
|
filename=$RELEASE.apk
|
||||||
|
if [[ -e $filename ]]; then
|
||||||
|
rm -v $filename
|
||||||
|
fi
|
||||||
|
cp -v build/app/outputs/flutter-apk/app-release.apk $filename
|
||||||
|
ls -sh $filename
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:geolocator/geolocator.dart';
|
import 'package:geolocator/geolocator.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
@@ -7,6 +8,7 @@ import 'package:flutter_local_notifications/flutter_local_notifications.dart';
|
|||||||
import 'package:timezone/data/latest_all.dart' as tz;
|
import 'package:timezone/data/latest_all.dart' as tz;
|
||||||
import 'package:timezone/timezone.dart' as tz;
|
import 'package:timezone/timezone.dart' as tz;
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
|
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
void main() async {
|
void main() async {
|
||||||
@@ -171,6 +173,12 @@ class _HomeScreenState extends State<HomeScreen> {
|
|||||||
Timer? _alarmTimer;
|
Timer? _alarmTimer;
|
||||||
|
|
||||||
Future<void> _scheduleAlarm() async {
|
Future<void> _scheduleAlarm() async {
|
||||||
|
final canSchedule = await android?.canScheduleExactNotifications();
|
||||||
|
if (canSchedule != true) {
|
||||||
|
_showSnack('Permissions not yet granted, requesting...');
|
||||||
|
await android?.requestExactAlarmsPermission();
|
||||||
|
}
|
||||||
|
|
||||||
final sunsetText = _sunsetController.text.trim();
|
final sunsetText = _sunsetController.text.trim();
|
||||||
if (sunsetText.isEmpty) return;
|
if (sunsetText.isEmpty) return;
|
||||||
|
|
||||||
@@ -417,3 +425,27 @@ class _HomeScreenState extends State<HomeScreen> {
|
|||||||
return '${dh.toString().padLeft(2, '0')}:${dm.toString().padLeft(2, '0')}';
|
return '${dh.toString().padLeft(2, '0')}:${dm.toString().padLeft(2, '0')}';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final _plugin = FlutterLocalNotificationsPlugin();
|
||||||
|
|
||||||
|
Future<void> requestPermissions() async {
|
||||||
|
if (Platform.isAndroid) {
|
||||||
|
final android =
|
||||||
|
_plugin
|
||||||
|
.resolvePlatformSpecificImplementation<
|
||||||
|
AndroidFlutterLocalNotificationsPlugin
|
||||||
|
>();
|
||||||
|
|
||||||
|
// Android 13+ — standard notification permission (shows a dialog)
|
||||||
|
await android?.requestNotificationsPermission();
|
||||||
|
|
||||||
|
// Android 12+ — exact alarm special access (opens system settings page)
|
||||||
|
await android?.requestExactAlarmsPermission();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
final android =
|
||||||
|
_plugin
|
||||||
|
.resolvePlatformSpecificImplementation<
|
||||||
|
AndroidFlutterLocalNotificationsPlugin
|
||||||
|
>();
|
||||||
Reference in new issue
Block a user