当我更改标签时,我的信息丢失了
我试图保持与提供商的信息,但当我改变到另一个我的信息丢失,这是我的代码。我不知道如何保持所有的内容,如果你们需要更多的代码,说出来,我张贴其余的代码。现在这是我能在代码中找到的唯一问题,但我认为还有更多的问题。
import 'package:provider/provider.dart';
import '../../providers/item_provider.dart';
import '../../search/product_search.dart';
import '../../models/product.dart';
class Busqueda extends StatefulWidget {
final TabController tabController;
const Busqueda(this.tabController);
@override
State<Busqueda> createState() => _BusquedaState();
}
class _BusquedaState extends State<Busqueda> {
late Product productoSeleccionado = Product(
fotoUrl: '',
itemId: 0,
codItem: '',
descripcion: '',
monedaId: 0,
precioVentaActual: 0,
existenciaActual: 0,
precioIvaIncluido: 0,
existenciaTotal: 0,
ivaId: 0,
valor: 0);
List<Product> historial = [];
Widget historialProducts(List<Product> products){
return ListView.builder(
itemCount: products.length,
itemBuilder: (context, i){
final producto = products[i];
return ListTile(
title: Text(context.watch<ItemProvider>().product.descripcion),
subtitle: Text(producto.codItem),
trailing: Text(producto.precioVentaActual.toString()),
);
}
);
}
@override
Widget build(BuildContext context) {
return Center(
child: Column(
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: SearchBar(
hintText: context.watch<ItemProvider>().product.descripcion.toString(),
textStyle: MaterialStatePropertyAll(TextStyle(color: Colors.grey)),
onTap: () async {
final producto = await showSearch(
context: context,
delegate:
ProductSearchDelegate('Buscar Producto', historial));
if (producto != null) {
setState(() {
productoSeleccionado = producto;
final int productoExiste = historial.indexWhere(
(element) => element.codItem == producto.codItem);
if (productoExiste == -1) {
historial.insert(0, producto);
}
context.read<ItemProvider>().setProduct(producto);
widget.tabController.animateTo(2);
});
}
},
),
),
Expanded(
child: historialProducts(this.historial)
)
],
),
);
}
}```
字符串
1条答案
按热度按时间1cklez4t1#
你可以试试这个widget。
字符串
你可以这样使用它;
型