import 'dart:async'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:trackoffical_app/logger.dart'; import 'package:trackoffical_app/pb.dart' as pb; import 'package:trackoffical_app/service/app.dart'; import 'package:trackoffical_app/widget/will_exit_after_2_back.dart'; import '../styles/theme.dart'; class AppUpdateController extends GetxController { final downloadProcess = 0.0.obs; Timer? _ticker; @override void onReady() { // var arg = Get.arguments; // if (arg is pb.GetUpdateVersionReply){ // App.to.updateApp(arg).then((value){ // info('下载完成'); // }, onError: (e){ // warn('安装失败:', e); // }); // } // _ticker = Timer.periodic(100.milliseconds, (timer) { // App.to.getUpdateAppProcess().then((value) => downloadProcess.value = value); // }); } @override void onClose(){ _ticker?.cancel(); } } class AppUpdateView extends GetView { // final pb.GetUpdateVersionReply data; // // const AppUpdateView(this.data, {super.key}); // // static Bindings bindings() { // return BindingsBuilder(() { // Get.put(AppUpdateController()); // }); // } // // static void show(pb.GetUpdateVersionReply updateInfo) { // Get.offAll( // AppUpdateView(updateInfo), // binding: AppUpdateView.bindings(), // arguments: updateInfo // ); // } @override Widget build(BuildContext context) { return WillExitAfter2Back(child: Scaffold( body: Container( width: double.infinity, height: double.infinity, padding: const EdgeInsets.all(24), child: Center( child: Column( mainAxisSize: MainAxisSize.min, children: [ const SizedBox(height: 100), Image.asset('assets/images/sign_in_logo.png', height: 45.77), const SizedBox(height: 45.35), Image.asset('assets/images/ic_logo_rect.png', height: 54), const SizedBox(height: 21), Text('小飞龙定向软件升级', style: context.textTheme.titleLarge?.copyWith(fontSize: 13, color: const Color(0xffaaaaaa))), const SizedBox(height: 24), Flexible( flex: 1, child: Container( padding: const EdgeInsets.all(24), height: 400, width: double.infinity, child: SizedBox( width: double.infinity, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text('更新内容:'), // Text(data.vMemo) ], ) , ) , ), ), const SizedBox(height: 24), SizedBox( height: 17.42, child: ClipRRect( borderRadius: const BorderRadius.all(Radius.circular(8.71)), child: Obx(() => LinearProgressIndicator( value: controller.downloadProcess.value), ) ) ), const SizedBox(height: 100) ], ), ), ), )) ; } } void main() async { var c = AppUpdateController(); c.downloadProcess.value = 0.5; Get.put(c); // runApp(GetMaterialApp( // theme: appThemeData(), // home: AppUpdateView(pb.GetUpdateVersionReply()..vMemo= "更新内容"))); }