cashumit/lib/widgets/store_disclaimer.dart

78 lines
2.2 KiB
Dart

import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:shared_preferences/shared_preferences.dart';
/// Widget untuk menampilkan disclaimer toko
class StoreDisclaimer extends StatefulWidget {
final VoidCallback? onTap; // Tambahkan callback onTap
const StoreDisclaimer({super.key, this.onTap});
@override
State<StoreDisclaimer> createState() => _StoreDisclaimerState();
}
class _StoreDisclaimerState extends State<StoreDisclaimer> {
String _disclaimerText = 'Barang yang sudah dibeli tidak dapat dikembalikan/ditukar. '
'Harap periksa kembali struk belanja Anda sebelum meninggalkan toko.';
@override
void initState() {
super.initState();
_loadDisclaimerText();
}
@override
void didUpdateWidget(covariant StoreDisclaimer oldWidget) {
super.didUpdateWidget(oldWidget);
// Memuat ulang teks ketika widget diupdate
_loadDisclaimerText();
}
/// Memuat teks disclaimer dari shared preferences
Future<void> _loadDisclaimerText() async {
final prefs = await SharedPreferences.getInstance();
final savedText = prefs.getString('store_disclaimer_text');
if (mounted && savedText != null) {
setState(() {
_disclaimerText = savedText;
});
}
}
@override
Widget build(BuildContext context) {
// Mencoba menggunakan Google Fonts Courier Prime, jika gagal gunakan font sistem
TextStyle courierPrime;
try {
courierPrime = GoogleFonts.courierPrime(
textStyle: const TextStyle(
fontSize: 12,
height: 1.2,
),
);
} catch (e) {
// Fallback ke font sistem jika Google Fonts tidak tersedia
courierPrime = const TextStyle(
fontFamily: 'CourierPrime, Courier, monospace',
fontSize: 12,
height: 1.2,
);
}
return GestureDetector(
onTap: widget.onTap, // Gunakan callback onTap dari widget
child: Container(
width: double.infinity,
padding: const EdgeInsets.all(8.0),
color: Colors.white,
child: Text(
_disclaimerText,
style: courierPrime,
textAlign: TextAlign.center,
),
),
);
}
}