General Example
Prepare environment #
Install Flutter SDK and setup your environment
Add our flutter package #
To add the barkoder_flutter package to your project, you have two options. You can either use the barkoder_flutter package from pub.dev or from a local path.
To use the package from pub.dev, add the package name and version to your project's dependencies:
dependencies:
flutter:
sdk: flutter
barkoder_flutter: <package version>
If you prefer to use a local package, download the package from https://barkoder.com and set the package path in your project's dependencies:
dependencies:
flutter:
sdk: flutter
barkoder_flutter:
path: <package local path>
Install dependencies #
Run flutter pub get command in terminal to install the specified dependencies in your project
Creating the BarcodeScanner Widget #
Create a new widget lib/barkoder_flutter.dart and add the following code:
import 'package:flutter/material.dart';
import 'package:barkoder_flutter/barkoder_flutter.dart';
class BarcodeScanner extends StatefulWidget {
@override
_BarcodeScannerState createState() => _BarcodeScannerState();
}
class _BarcodeScannerState extends State<BarcodeScanner> {
Barkoder? _barkoder;
String? scannedResult;
bool isScanning = false;
void _onBarkoderViewCreated(Barkoder barkoder) {
_barkoder = barkoder;
_barkoder!.setRegionOfInterestVisible(true);
_barkoder!.setRegionOfInterest(5, 5, 90, 90);
_barkoder!.setCloseSessionOnResultEnabled(false);
_barkoder!.setImageResultEnabled(true);
_barkoder!.setBarcodeThumbnailOnResultEnabled(true);
_barkoder!.setBeepOnSuccessEnabled(true);
_barkoder!.setPinchToZoomEnabled(true);
_barkoder!.setZoomFactor(2.0);
// Enable the barcode types and add others if you need
_barkoder!.setBarcodeTypeEnabled(BarcodeType.code128, true);
_barkoder!.setBarcodeTypeEnabled(BarcodeType.code39, true);
_barkoder!.setBarcodeTypeEnabled(BarcodeType.ean13, true);
}
void _startScanning() {
setState(() {
scannedResult = null;
isScanning = true;
});
_barkoder!.startScanning((result) {
setState(() {
scannedResult = result.textualData;
isScanning = false;
});
});
}
void _stopScanning() {
_barkoder!.stopScanning();
setState(() {
isScanning = false;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Barcode Scanner')),
body: Column(
children: [
Expanded(
child: BarkoderView(
licenseKey: 'ADD_YOUR_LICENSE_KEY_HERE',
onBarkoderViewCreated: _onBarkoderViewCreated,
),
),
if (scannedResult != null)
Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
children: [
Text('Result: $scannedResult'),
// Here you can add more details like barcode type, or display the thumbnail
],
),
),
Padding(
padding: const EdgeInsets.all(16.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
ElevatedButton(
onPressed: isScanning ? null : _startScanning,
child: Text('Start Scanning'),
),
ElevatedButton(
onPressed: isScanning ? _stopScanning : null,
child: Text('Stop Scanning'),
),
],
),
),
],
),
);
}
}
Adding to Your Main App #
Make sure to add this widget to your app’s navigation or replace the main screen with it. Below is an example of how you might include this in a simple Flutter app:
import 'package:flutter/material.dart';
import 'barcode_scanner.dart'; // Adjust the path as necessary
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Barcode Scanner',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: BarcodeScanner(),
);
}
}
Run the App #
Run your Flutter app using flutter run
Minimum SDK #
The plugin requires a minimum SDK version of 21, but your Flutter project's Android SDK version is set to 20 or lower, you'll need to update the minSdkVersion
in your build.gradle
file to at least 21:
android {
compileSdkVersion 33
defaultConfig {
applicationId "com.example.my_flutter_app"
minSdkVersion 21 // Updated from 19 to 21
targetSdkVersion 33
versionCode 1
versionName "1.0"
multiDexEnabled true
}
...
}