first commit
This commit is contained in:
103
lib/screen/splash/splash_screen.dart
Normal file
103
lib/screen/splash/splash_screen.dart
Normal file
@@ -0,0 +1,103 @@
|
||||
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),
|
||||
)
|
||||
],
|
||||
),
|
||||
));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user