TimeTracker/lib/pages/UpdateSettings.dart

109 lines
3.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:libacflutter/Constants.dart';
import 'package:ota_update/ota_update.dart';
import 'package:timetrack/consts.dart';
import 'package:timetrack/data.dart';
class UpdateSettingsPage extends StatefulWidget {
const UpdateSettingsPage({super.key});
@override
State<StatefulWidget> createState() {
return _UpdSet();
}
}
class _UpdSet extends State<UpdateSettingsPage> {
@override
void initState() {
SessionData.Calls.UpdateSettingsCallback = call;
super.initState();
}
@override
void dispose() {
SessionData.Calls.UpdateSettingsCallback = null;
super.dispose();
}
void call() {
setState(() {});
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Time Tracker > Update Settings"),
backgroundColor: LibACFlutterConstants.TITLEBAR_COLOR,
),
body: SingleChildScrollView(
child: Column(
children: [
Text(
"Here, you can check for updates, and adjust various settings, such as the update channel",
style: TextStyle(fontSize: 24),
),
ListTile(
title: Text("Update Channel"),
leading: Icon(Icons.wifi_channel),
subtitle: Text("Current Channel: ${TTConsts.UPDATE_CHANNEL}"),
trailing: DropdownMenu(
dropdownMenuEntries: [
DropdownMenuEntry(value: UpdateChannel.alpha, label: "Alpha"),
DropdownMenuEntry(value: UpdateChannel.beta, label: "Beta"),
DropdownMenuEntry(
value: UpdateChannel.stable,
label: "Stable",
),
],
initialSelection: TTConsts.UPDATE_CHANNEL,
onSelected: (value) {
setState(() {
TTConsts.UPDATE_CHANNEL = value!;
});
},
),
),
ListTile(
title: Text("Check for updates.."),
leading: Icon(Icons.refresh),
subtitle: Text(
"Check for a update on the preferred update channel",
),
onTap: () async {
await TTConsts.checkUpdate();
setState(() {});
},
),
if (TTConsts.UPDATE_AVAILABLE)
ListTile(
title: Text("Install Update"),
leading: Icon(Icons.update),
subtitle: Text(
"Downloads and prompts you for installation of the update",
),
onTap: () {
OtaUpdate()
.execute(
"https://ci.zontreck.com/job/Projects/job/Dart/job/Time%20Tracker/job/${TTConsts.UPDATE_CHANNEL == UpdateChannel.stable ? "main" : TTConsts.UPDATE_CHANNEL}/lastSuccessfulBuild/artifact/build/app/outputs/flutter-apk/timetrack.apk",
destinationFilename: "timetrack.apk",
)
.listen((OtaEvent event) {
//setState(() => currentEvent = event);
});
},
),
],
),
),
);
}
}