Files
ticket-booth-cpone/lib/screen/splash/splash_screen.dart
2025-01-31 10:12:08 +07:00

104 lines
3.4 KiB
Dart

import 'dart:async';
import 'dart:convert';
import 'package:animated_text_kit/animated_text_kit.dart';
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_pos_printer_platform_image_3/flutter_pos_printer_platform_image_3.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:ticket_booth/app/constant.dart';
import 'package:ticket_booth/app/route.dart';
import 'package:ticket_booth/model/printer_device.dart';
import '../widgets/error_dialog.dart';
class SplashScreen extends HookConsumerWidget {
const SplashScreen({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final PrinterManager pm = PrinterManager.instance;
_connectDevice(PrinterDev selectedPrinter, PrinterType type,
{bool reconnect = true, String? ipAddress = null}) async {
try {
await pm.connect(
type: type,
model: UsbPrinterInput(
name: selectedPrinter.deviceName,
productId: selectedPrinter.productId,
vendorId: selectedPrinter.vendorId));
} catch (e) {
print(e);
}
}
Future getData() async {
try {
final prefs = await SharedPreferences.getInstance();
var raw_data = prefs.getString('tb-westerindo') ?? 'a';
if (raw_data != 'a') {
var data = json.decode(raw_data);
PrinterDev selectedPrinter =
PrinterDev.fromJson(data['selectedPrinter']);
_connectDevice(selectedPrinter, PrinterType.usb);
}
} catch (e) {
print(e);
ErrorDialog(context, e.toString(), 'ERROR');
}
}
useEffect(() {
WidgetsBinding.instance.addPostFrameCallback((timeStamp) async {
await getData();
Timer(const Duration(seconds: 3), () {
Navigator.of(context).pushNamed(displayRoute);
});
});
return () {};
}, []);
return Material(
child: Container(
height: Constant.getActualY(context: context, y: 982),
width: Constant.getActualX(context: context, x: 1512),
decoration: const BoxDecoration(
image: DecorationImage(
fit: BoxFit.cover,
image: AssetImage("assets/images/new-bg-icon.png"))),
child: Column(
children: [
SizedBox(
height: Constant.getActualY(context: context, y: 600),
width: Constant.getActualX(context: context, x: 1512),
),
const SpinKitFadingCube(
color: Colors.redAccent,
size: 50.0,
),
SizedBox(
height: Constant.getActualY(context: context, y: 50),
),
DefaultTextStyle(
style: Constant.title(context: context)
.copyWith(fontStyle: FontStyle.italic, color: Colors.black),
child: AnimatedTextKit(animatedTexts: [
TyperAnimatedText('Loading ...',
speed: Duration(milliseconds: 300))
])),
SizedBox(
height: Constant.getActualY(context: context, y: 50),
),
Text(
Constant.versi,
style: Constant.subTitle(context: context)
.copyWith(fontStyle: FontStyle.italic, color: Colors.grey),
)
],
),
));
}
}