ml_card_scanner 0.1.0 ml_card_scanner: ^0.1.0 copied to clipboard
Package for scanning bank credit cards.
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:ml_card_scanner/ml_card_scanner.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
/*await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);*/
runApp(const MaterialApp(home: MainScreen()));
}
class MainScreen extends StatefulWidget {
const MainScreen({super.key});
@override
State<MainScreen> createState() => _MainScreenState();
}
class _MainScreenState extends State<MainScreen> {
final ScannerWidgetController _controller = ScannerWidgetController();
final ValueNotifier<CardInfo?> _cardInfo = ValueNotifier(null);
@override
void initState() {
super.initState();
_controller
..setCardListener(_onListenCard)
..setErrorListener(_onError);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Card Scanner Example'),
),
body: Center(
child: Column(
children: [
Expanded(
child: ScannerWidget(
controller: _controller,
overlayOrientation: CardOrientation.landscape,
cameraResolution: CameraResolution.max,
),
),
Container(
width: MediaQuery.sizeOf(context).width,
color: Colors.white,
child: Column(
children: [
const SizedBox(
height: 20,
),
ValueListenableBuilder<CardInfo?>(
valueListenable: _cardInfo,
builder: (context, card, child) {
return Text(card?.toString() ?? 'No Card Details');
},
),
const SizedBox(
height: 20,
),
],
),
),
],
),
),
);
}
@override
void dispose() {
_controller
..removeCardListeners(_onListenCard)
..removeErrorListener(_onError)
..dispose();
super.dispose();
}
void _onListenCard(CardInfo? value) {
_cardInfo.value = value;
}
void _onError(ScannerException exception) {
if (kDebugMode) {
print('Error: ${exception.message}');
}
}
}