added filter for order

This commit is contained in:
komekh 2024-08-28 18:05:14 +05:00
parent 918cb70e2c
commit 9177c08239
9 changed files with 42 additions and 15 deletions

View File

@ -25,10 +25,7 @@ class MyApp extends StatelessWidget {
create: (context) => di.sl<UserBloc>(), //..add(CheckUser()),
),
BlocProvider(
create: (context) => di.sl<OrderBloc>()
..add(const GetOrders(
FilterProductParams(state: GoodsState.Received),
)),
create: (context) => di.sl<OrderBloc>(),
),
BlocProvider(
create: (context) => di.sl<OrderDetailBloc>(),

View File

@ -7,3 +7,8 @@ enum GoodsState {
Received,
Delivered,
}
enum OrderFilter {
Home,
History,
}

View File

@ -14,11 +14,19 @@ class OrderRemoteDataSourceImpl implements OrderRemoteDataSource {
final http.Client client;
OrderRemoteDataSourceImpl({required this.client});
// https://192.168.99.64:5001/api/Goods?pageNumber=1&pageSize=10&state=Reserved&state=Received&state=Delivered
@override
Future<OrderResponseModel> getOrders(FilterProductParams params, String token) async {
Uri uri = Uri.parse(
'$baseUrl/Goods?pageNumber=${params.offset}&pageSize=${params.limit}${params.state != null ? '&state=${params.state!.name}' : ''}',
Uri uri;
if (params.filter == OrderFilter.Home) {
uri = Uri.parse(
'$baseUrl/Goods?pageNumber=${params.offset}&pageSize=${params.limit}&state=Reserved&state=Received',
);
} else {
uri = Uri.parse(
'$baseUrl/Goods?pageNumber=${params.offset}&pageSize=${params.limit}&state=Delivered',
);
}
final response = await client.get(
uri,

View File

@ -1,19 +1,24 @@
import 'package:cargo/domain/domain.dart';
import '../../../core/utils/date_util.dart';
class RouteModel extends RouteEntity {
const RouteModel({
required super.name,
required super.lat,
required super.long,
required super.isCurrent,
required super.dateAt,
});
factory RouteModel.fromJson(Map<String, dynamic> json) {
DateTime? dateAt = json['DateAt'] != null ? DateTime.parse(json['DateAt']) : null;
return RouteModel(
name: json['Name'],
lat: json['Lat'] + .0,
long: json['Long'] + .0,
isCurrent: json['IsCurrent'],
dateAt: DateUtil.formatDateTimeToDDMMYYYY(dateAt),
);
}
@ -23,6 +28,7 @@ class RouteModel extends RouteEntity {
'Lat': lat,
'Long': long,
'IsCurrent': isCurrent,
'DateAt': dateAt,
};
}
}

View File

@ -3,23 +3,23 @@ import 'package:cargo/core/core.dart';
class FilterProductParams {
final int offset;
final int limit;
final GoodsState? state;
final OrderFilter? filter;
const FilterProductParams({
this.offset = 1,
this.limit = 10,
this.state,
this.filter,
});
FilterProductParams copyWith({
int? offset,
int? limit,
GoodsState? state,
OrderFilter? filter,
}) {
return FilterProductParams(
offset: offset ?? this.offset,
limit: limit ?? this.limit,
state: state ?? this.state,
filter: filter ?? this.filter,
);
}
}

View File

@ -5,14 +5,16 @@ class RouteEntity extends Equatable {
final double lat;
final double long;
final bool isCurrent;
final String dateAt;
const RouteEntity({
required this.name,
required this.lat,
required this.long,
required this.isCurrent,
required this.dateAt,
});
@override
List<Object?> get props => [name, lat, long, isCurrent];
List<Object?> get props => [name, lat, long, isCurrent, dateAt];
}

View File

@ -19,7 +19,7 @@ class _HistoriesScreenState extends State<HistoriesScreen> {
@override
void initState() {
super.initState();
context.read<OrderBloc>().add(const GetOrders(FilterProductParams()));
context.read<OrderBloc>().add(const GetOrders(FilterProductParams(filter: OrderFilter.History)));
}
@override

View File

@ -5,6 +5,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import '../../application/order_bloc/order_bloc.dart';
import '../../configs/configs.dart';
import '../../core/core.dart';
import '../../domain/entities/order/filter_params_model.dart';
import '../widgets/widgets.dart';
class OrdersScreen extends StatefulWidget {
@ -15,6 +16,12 @@ class OrdersScreen extends StatefulWidget {
}
class _OrdersScreenState extends State<OrdersScreen> with AutomaticKeepAliveClientMixin<OrdersScreen> {
@override
void initState() {
super.initState();
context.read<OrderBloc>().add(const GetOrders(FilterProductParams(filter: OrderFilter.Home)));
}
@override
Widget build(BuildContext context) {
super.build(context);
@ -43,14 +50,16 @@ class _OrdersScreenState extends State<OrdersScreen> with AutomaticKeepAliveClie
Text(
'my_orders'.tr(),
style: const TextStyle(
fontSize: 20,
fontSize: 22,
fontWeight: FontWeight.bold,
),
),
Space.yf(0.30),
Text(
'follow_orders'.tr(),
style: const TextStyle(
color: Colors.grey,
fontSize: 16,
),
),
],

View File

@ -56,7 +56,7 @@ class LocationCard extends StatelessWidget {
),
const Spacer(),
Text(
'30.02.2024', // routes[index].date,
routes[index].dateAt,
style: AppText.b1!.copyWith(color: AppColors.grey),
),
],