elgin_tef_plugin 0.0.1 copy "elgin_tef_plugin: ^0.0.1" to clipboard
elgin_tef_plugin: ^0.0.1 copied to clipboard

PlatformAndroid

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';
      });
    }
  }
}
0
likes
150
points
12
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter plugin for Elgin TEF integration

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

flutter

More

Packages that depend on elgin_tef_plugin

Packages that implement elgin_tef_plugin