import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:libacflutter/Constants.dart'; import 'package:ota_update/ota_update.dart'; import 'package:pokedex/Consts.dart'; import 'package:pokedex/Session.dart'; class UpdateCheck extends StatefulWidget { const UpdateCheck({super.key}); @override State createState() { return _UPDCheck(); } } class _UPDCheck extends State { Future checkUpdate() async { Dio dio = Dio(); // retrieve the latest version info file. var reply = await dio.get( "https://git.zontreck.com/zontreck/PokeDex/raw/branch/main/LATEST_VERSION", ); String replyStr = reply.data as String; replyStr = replyStr.trim(); // Check if version mismatch! if (replyStr != Constants.VERSION) { SessionData.isUpdateAvailable = true; } else { SessionData.isUpdateAvailable = false; } } @override void initState() { // Check for updates checkUpdate(); super.initState(); } @override void didChangeDependencies() { SessionData.callbacks.updateCheckPage = () async { setState(() {}); }; super.didChangeDependencies(); } @override void dispose() { SessionData.callbacks.updateCheckPage = null; super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("PokeDex - Update Checker"), backgroundColor: LibACFlutterConstants.TITLEBAR_COLOR, ), body: Padding( padding: EdgeInsetsGeometry.all(8), child: SingleChildScrollView( child: Column( children: [ ListTile( title: Text("Check for updates..."), subtitle: Text("Checks for an update immediately."), leading: Icon(Icons.update_outlined), onTap: () async { await checkUpdate(); setState(() {}); }, ), if (SessionData.isUpdateAvailable) ListTile( title: Text("Install Update"), subtitle: Text("Download and install the available update"), leading: Icon(Icons.system_update), onTap: () async { // Do the update! SessionData.isUpdateAvailable = false; setState(() {}); OtaUpdate updater = OtaUpdate(); updater.execute( "https://ci.zontreck.com/job/Projects/job/Dart/job/PokeDex/job/main/lastSuccessfulBuild/artifact/pokedex.apk", destinationFilename: "pokedex.apk", ); }, ), if (!SessionData.isUpdateAvailable) ListTile( title: Text("No Available Update"), subtitle: Text( "There is not a update available at this time.", ), leading: Icon(Icons.disabled_by_default), tileColor: LibACFlutterConstants.TITLEBAR_COLOR, ), ], ), ), ), ); } }