104 lines
3.4 KiB
Dart
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),
|
|
)
|
|
],
|
|
),
|
|
));
|
|
}
|
|
}
|