Para implementar o fluxo que você deseja, você pode usar o gerenciamento de estado no Flutter para armazenar os dados temporariamente enquanto o usuário navega pelas diferentes telas do seu aplicativo. Uma abordagem comum para isso é usar um gerenciador de estado global, como o Provider ou o Riverpod.
Adicione a dependência do Provider no seu arquivo pubspec.yaml
:
dependencies:
flutter:
sdk: flutter
provider: ^5.0.2
Importe o Provider no seu arquivo Dart:
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
Crie uma classe para armazenar o estado global do seu aplicativo. Vamos chamá-la de PedidoProvider
:
class PedidoProvider extends ChangeNotifier {
String nomeCliente = "";
String telefone = "";
String formaPagamento = "";
List<Map<String, dynamic>> pedidos = [];
void adicionarPedido(Map<String, dynamic> pedido) {
pedidos.add(pedido);
notifyListeners();
}
// Adicione métodos semelhantes para as outras informações que você precisa salvar.
}
Em volta do seu MaterialApp
, envolva-o com o ChangeNotifierProvider
:
void main() {
runApp(
ChangeNotifierProvider(
create: (context) => PedidoProvider(),
child: MyApp(),
),
);
}
Em cada tela do seu aplicativo, você pode acessar o estado global usando o Provider.of
e atualizar os dados conforme necessário:
class TelaPedidos extends StatelessWidget {
@override
Widget build(BuildContext context) {
var pedidoProvider = Provider.of<PedidoProvider>(context);
// Use pedidoProvider para acessar e atualizar os dados necessários
return Scaffold(
//...
);
}
}
Quando o usuário finalizar o pedido, você pode enviar todos os dados para a sua API:
class TelaFinalizarPedido extends StatelessWidget {
@override
Widget build(BuildContext context) {
var pedidoProvider = Provider.of<PedidoProvider>(context);
// Enviar dados para a API usando pedidoProvider
return Scaffold(
//...
);
}
}