elgin_tef_plugin 0.0.1
elgin_tef_plugin: ^0.0.1 copied to clipboard
A Flutter plugin for Elgin TEF integration
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:elgin_tef_plugin/elgin_tef_plugin.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _resultText = 'Nenhuma operação realizada';
final TextEditingController _valorController =
TextEditingController(text: '10.00');
final TextEditingController _parcelasController =
TextEditingController(text: '1');
final TextEditingController _nsuController = TextEditingController();
final TextEditingController _dataController = TextEditingController();
final TextEditingController _cnpjController =
TextEditingController(text: '00.000.000/0000-00');
ElginTefFinanciamento _financiamento = ElginTefFinanciamento.aVista;
@override
void dispose() {
_valorController.dispose();
_parcelasController.dispose();
_nsuController.dispose();
_dataController.dispose();
_cnpjController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Elgin TEF Plugin Example'),
),
body: SingleChildScrollView(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
// Configuração e Ativação
Card(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
const Text('Configuração e Ativação',
style: TextStyle(fontWeight: FontWeight.bold)),
const SizedBox(height: 8),
TextField(
controller: _cnpjController,
decoration: const InputDecoration(
labelText: 'CNPJ/CPF',
border: OutlineInputBorder(),
),
),
const SizedBox(height: 8),
Row(
children: [
Expanded(
child: ElevatedButton(
onPressed: _configurar,
child: const Text('Configurar'),
),
),
const SizedBox(width: 8),
Expanded(
child: ElevatedButton(
onPressed: _ativar,
child: const Text('Ativar'),
),
),
],
),
],
),
),
),
const SizedBox(height: 16),
// Vendas
Card(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
const Text('Vendas',
style: TextStyle(fontWeight: FontWeight.bold)),
const SizedBox(height: 8),
TextField(
controller: _valorController,
keyboardType: TextInputType.number,
decoration: const InputDecoration(
labelText: 'Valor',
border: OutlineInputBorder(),
),
),
const SizedBox(height: 8),
TextField(
controller: _parcelasController,
keyboardType: TextInputType.number,
decoration: const InputDecoration(
labelText: 'Parcelas',
border: OutlineInputBorder(),
),
),
const SizedBox(height: 8),
DropdownButtonFormField<ElginTefFinanciamento>(
value: _financiamento,
decoration: const InputDecoration(
labelText: 'Financiamento',
border: OutlineInputBorder(),
),
items:
ElginTefFinanciamento.values.map((financiamento) {
String label;
switch (financiamento) {
case ElginTefFinanciamento.aVista:
label = 'À Vista';
break;
case ElginTefFinanciamento.credito:
label = 'Crédito';
break;
case ElginTefFinanciamento.debito:
label = 'Débito';
break;
case ElginTefFinanciamento.loja:
label = 'Loja';
break;
}
return DropdownMenuItem(
value: financiamento,
child: Text(label),
);
}).toList(),
onChanged: (value) {
setState(() {
_financiamento = value!;
});
},
),
const SizedBox(height: 8),
Row(
children: [
Expanded(
child: ElevatedButton(
onPressed: _credito,
child: const Text('Crédito'),
),
),
const SizedBox(width: 8),
Expanded(
child: ElevatedButton(
onPressed: _debito,
child: const Text('Débito'),
),
),
],
),
],
),
),
),
const SizedBox(height: 16),
// Cancelamento
Card(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
const Text('Cancelamento',
style: TextStyle(fontWeight: FontWeight.bold)),
const SizedBox(height: 8),
TextField(
controller: _nsuController,
decoration: const InputDecoration(
labelText: 'NSU',
border: OutlineInputBorder(),
),
),
const SizedBox(height: 8),
TextField(
controller: _dataController,
decoration: const InputDecoration(
labelText: 'Data (DD/MM/YY)',
border: OutlineInputBorder(),
),
),
const SizedBox(height: 8),
ElevatedButton(
onPressed: _cancelar,
child: const Text('Cancelar Transação'),
),
],
),
),
),
const SizedBox(height: 16),
// Outras operações
Card(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
const Text('Outras Operações',
style: TextStyle(fontWeight: FontWeight.bold)),
const SizedBox(height: 8),
Row(
children: [
Expanded(
child: ElevatedButton(
onPressed: _reimprimir,
child: const Text('Reimprimir'),
),
),
const SizedBox(width: 8),
Expanded(
child: ElevatedButton(
onPressed: _relatorio,
child: const Text('Relatório'),
),
),
],
),
],
),
),
),
const SizedBox(height: 16),
// Resultado
Card(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
const Text('Resultado:',
style: TextStyle(fontWeight: FontWeight.bold)),
const SizedBox(height: 8),
Container(
padding: const EdgeInsets.all(8.0),
decoration: BoxDecoration(
border: Border.all(color: Colors.grey),
borderRadius: BorderRadius.circular(4.0),
),
child: SingleChildScrollView(
child: Text(_resultText),
),
),
],
),
),
),
],
),
),
),
);
}
Future<void> _configurar() async {
try {
final result = await ElginTefPlugin.configurar(
nome: 'Elgin',
versao: '1.5.0',
textoPinpad: 'Elgin Tef',
);
setState(() {
_resultText = result.toString();
});
} catch (e) {
setState(() {
_resultText = 'Erro: $e';
});
}
}
Future<void> _ativar() async {
try {
final result = await ElginTefPlugin.ativar(
cnpjCpf: _cnpjController.text,
);
setState(() {
_resultText = result.toString();
});
} catch (e) {
setState(() {
_resultText = 'Erro: $e';
});
}
}
Future<void> _credito() async {
try {
final result = await ElginTefPlugin.credito(
valor: _valorController.text,
parcelas: _parcelasController.text,
financiamento: _financiamento,
);
setState(() {
_resultText = result.toString();
});
} catch (e) {
setState(() {
_resultText = 'Erro: $e';
});
}
}
Future<void> _debito() async {
try {
final result = await ElginTefPlugin.debito(
valor: _valorController.text,
);
setState(() {
_resultText = result.toString();
});
} catch (e) {
setState(() {
_resultText = 'Erro: $e';
});
}
}
Future<void> _cancelar() async {
try {
final result = await ElginTefPlugin.cancelar(
valor: _valorController.text,
nsu: _nsuController.text,
data: _dataController.text,
);
setState(() {
_resultText = result.toString();
});
} catch (e) {
setState(() {
_resultText = 'Erro: $e';
});
}
}
Future<void> _reimprimir() async {
try {
final result = await ElginTefPlugin.reimprimir();
setState(() {
_resultText = result.toString();
});
} catch (e) {
setState(() {
_resultText = 'Erro: $e';
});
}
}
Future<void> _relatorio() async {
try {
final result = await ElginTefPlugin.relatorio();
setState(() {
_resultText = result.toString();
});
} catch (e) {
setState(() {
_resultText = 'Erro: $e';
});
}
}
}