У меня есть просмотр списка, который возвращает список заказов из моей локальной базы данных (sqflite), и он работает очень хорошо.
После нажатия на плитку списка я перемещаю навигацию на другую страницу, когда мойВторая страница загружена. Я заметил, что будущая функция вызывается снова, моя вторая страница загружается и работает нормально, но мне кажется, нет необходимости снова вызывать будущую функцию.
Могу ли я контролировать это поведение?
Вот мой код для первой страницы:
import 'package:flutter/material.dart';
import '../model/coleta.dart';
import 'coletarPedido.dart';
void selectedOrderTile(PedidoColeta pedidoColeta, BuildContext context) {
Navigator.push(context, new MaterialPageRoute(builder: (context) => new ColetaPage(pedidoColeta: pedidoColeta)));
}
Future<List<PedidoColeta>> listaPedidosAguardandoColeta() async {
return await PedidoColeta.retornaListaPedidosColeta(1);
}
Widget pedidosAguardandoColeta(context) {
return new FutureBuilder<List<PedidoColeta>> (
future: listaPedidosAguardandoColeta(),
builder: (BuildContext context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
if (snapshot.data == null || snapshot.data.length == 0) {
return new Text("Nenhum pedido por aqui!");
} else {
return new ListView.separated(
padding: const EdgeInsets.all(8.0),
itemCount: snapshot.data.length,
itemBuilder: (context, i) {
return tilePedido(snapshot.data[i], context);
},
separatorBuilder: (context, i) {
return Divider();
},
);
}
}
return new Container(
alignment: AlignmentDirectional.center,
child: new CircularProgressIndicator()
);
},
);
}
Widget tilePedido(PedidoColeta pedidoColeta, context) {
return ListTile(
leading: new Container(
width: 50.0,
height: 50.0,
decoration: new BoxDecoration(
shape: BoxShape.circle,
color: Colors.grey[300],
image: new DecorationImage(
fit: BoxFit.fill,
image: AssetImage(pedidoColeta.logoCliente)
)
)
),
title: Text('Pedido: ' + pedidoColeta.idPedido.toString() + ' Ocam: ' + pedidoColeta.idOcam.toString(), style: Theme.of(context).textTheme.button),
subtitle: Text('Total de Itens: ' + pedidoColeta.qtdItem.toString() + '\nData de Saída: ' + pedidoColeta.dataSaida.toString()),
dense: true,
onTap: () => selectedOrderTile(pedidoColeta, context),
);
}