Commit edbe5829 authored by Calebe Rocha's avatar Calebe Rocha
Browse files

FIX Correções nas telas de produto...

Criação de produtos enviando parceiro, listagem de produtos especificando id do parceiro, Removido botão de adicionar ao carrinho duplicado,
parent ec1a8c79
Showing with 41 additions and 58 deletions
+41 -58
......@@ -8,7 +8,6 @@ import 'package:apus_drones_mobile/theme/AppTheme.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'screens/CreateProductScreen.dart';
import 'screens/EditProductScreen.dart';
import 'screens/PartnerProductListScreen.dart';
......@@ -33,7 +32,6 @@ class MyApp extends StatelessWidget {
HomePage.routeName: (ctx) => HomePage(),
CartScreen.routeName: (ctx) => CartScreen(),
OrdersScreen.routeName: (ctx) => OrdersScreen(),
'CreateProductScreen': (_) => CreateProductScreen(),
'EditProductScreen': (_) => EditProductScreen(),
PartnerProductListScreen.routeName: (_) =>
PartnerProductListScreen(),
......
......@@ -13,8 +13,9 @@ class CreateProductModel {
final double weight;
final DateTime createdAt;
final int quantity;
final PartnerModel? partner;
final int? partner;
final List<PictureToUploadModel> files;
final List<String> imagesUrls;
CreateProductModel({
required this.name,
......@@ -26,6 +27,7 @@ class CreateProductModel {
required this.quantity,
this.partner,
required this.files,
required this.imagesUrls,
});
factory CreateProductModel.fromJson(Map<String, dynamic> json) =>
......
......@@ -15,12 +15,12 @@ CreateProductModel _$CreateProductModelFromJson(Map<String, dynamic> json) {
weight: (json['weight'] as num).toDouble(),
createdAt: DateTime.parse(json['createdAt'] as String),
quantity: json['quantity'] as int,
partner: json['partner'] == null
? null
: PartnerModel.fromJson(json['partner'] as Map<String, dynamic>),
partner: json['partner'] as int?,
files: (json['files'] as List<dynamic>)
.map((e) => PictureToUploadModel.fromJson(e as Map<String, dynamic>))
.toList(),
imagesUrls:
(json['imagesUrls'] as List<dynamic>).map((e) => e as String).toList(),
);
}
......@@ -35,4 +35,5 @@ Map<String, dynamic> _$CreateProductModelToJson(CreateProductModel instance) =>
'quantity': instance.quantity,
'partner': instance.partner,
'files': instance.files,
'imagesUrls': instance.imagesUrls,
};
......@@ -64,7 +64,7 @@ class _CustomerProductDetailScreenState
child: Column(
children: [
ProductCarousel(
productImages: _product.imagesUrls, height: 250),
productImages: _product.imagesUrls, height: 250),
SizedBox(height: 20),
Text(
_product.name,
......@@ -72,38 +72,13 @@ class _CustomerProductDetailScreenState
TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
QuantityChangerChip(
quantity: _quantity,
minQuantity: 1,
maxQuantity: maxQuantity,
onTapMinus: () {
setState(() {
_quantity = max(_quantity - 1, 1);
});
},
onTapPlus: () {
setState(() {
_quantity = min(_quantity + 1, maxQuantity);
});
},
),
SizedBox(width: 20),
AddToCart(
product: product,
quantity: _quantity,
),
],
),
SizedBox(height: 20),
Text(_product.description),
SizedBox(height: 20),
Container(
alignment: Alignment.center,
width: 365,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
QuantityChangerChip(
quantity: _quantity,
......@@ -121,16 +96,10 @@ class _CustomerProductDetailScreenState
},
),
SizedBox(width: 20),
ElevatedButton.icon(
onPressed: () {},
icon: Icon(Icons.shopping_cart_rounded),
label: Text('Adicionar ao carrinho'),
style: ElevatedButton.styleFrom(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(50),
),
),
)
AddToCart(
product: product,
quantity: _quantity,
),
],
),
)
......
......@@ -3,6 +3,7 @@ import 'dart:io';
import 'package:apus_drones_mobile/constants/UserType.dart';
import 'package:apus_drones_mobile/models/CreateProductModel.dart';
import 'package:apus_drones_mobile/models/PartnerModel.dart';
import 'package:apus_drones_mobile/models/PictureToUploadModel.dart';
import 'package:apus_drones_mobile/models/ProductModel.dart';
import 'package:apus_drones_mobile/screens/PartnerProductListScreen.dart';
......@@ -74,22 +75,31 @@ class _EditProductScreenState extends State<EditProductScreen> {
? _postProduct(name, description, price, weight, quantity)
: _updateProduct(name, description, price, weight, quantity));
Navigator.push(context,
MaterialPageRoute(builder: (context) => PartnerProductListScreen()));
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => PartnerProductListScreen(),
),
);
}
Future<void> _postProduct(String name, String description, double price,
double weight, int quantity) async {
final _pictures = pictures;
List<PictureToUploadModel> files = _pictures != null
? (await Future.wait(_pictures.map((p) async {
List<int> picBytes = await p.readAsBytes();
String base64 = base64Encode(picBytes);
return PictureToUploadModel(
base64: base64,
fileName: Path.basename(p.path),
mainFile: false);
})))
? (await Future.wait(
_pictures.map(
(p) async {
List<int> picBytes = await p.readAsBytes();
String base64 = base64Encode(picBytes);
return PictureToUploadModel(
base64: base64,
fileName: Path.basename(p.path),
mainFile: false,
);
},
),
))
.toList()
: [];
......@@ -102,6 +112,8 @@ class _EditProductScreenState extends State<EditProductScreen> {
createdAt: DateTime.now(),
quantity: quantity,
files: files,
partner: 3,
imagesUrls: [],
);
await service.postProduct(product);
......@@ -194,8 +206,6 @@ class _EditProductScreenState extends State<EditProductScreen> {
quantity = int.tryParse(quantityController.text) ?? 0;
});
});
}
@override
......
......@@ -23,9 +23,10 @@ class _PartnerProductListScreenState extends State<PartnerProductListScreen> {
List<bool> selectedProductsIndexes = [];
PartnerService partnerService = new PartnerService();
ProductService productService = new ProductService();
int partnerId = 3;
_fetchProducts() {
partnerService.getProducts(1).then((data) => this.setState(() {
partnerService.getProducts(partnerId).then((data) => this.setState(() {
products = data;
selectedProductsIndexes = List.filled(data.length, false);
}));
......
......@@ -234,7 +234,7 @@ class _ListOfSearchState extends State<ListOfSearch> {
),
Padding(
padding: const EdgeInsets.all(10),
child: AddToCart(products[i]),
child: AddToCart(product: products[i]),
)
],
)))));
......
......@@ -21,8 +21,10 @@ class ProductService {
Uri.parse('${Config.apiURL}/product'),
headers: {'content-type': 'application/json'},
body: json.encode(product.toJson()));
print('Response: ${response.statusCode}');
} catch (error) {
print(error);
print('ERROR: $error');
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment