Commit cfeb0e2f authored by Dio Maulana's avatar Dio Maulana

second display

parent 3cc51675
import 'dart:convert';
import 'package:second_display/helper/config.dart';
import 'package:second_display/models/order_detail.dart';
import 'package:second_display/models/orders.dart';
import 'package:http/http.dart' as http;
......@@ -12,42 +13,33 @@ class Api {
total: "0.0",
discount_amount: "0.0",
orderCount: 0,
subtotal: "0.0");
subtotal: "0.0",
tax: "0");
try {
Map data = {
"session_key": "d289c7d6dfc04690b4149b93c91aef8a",
"user_id": "d31d7ad3ba864ea39300cb99c9e2ac3f",
"ignore_lock": "",
"order_id": "8181320f33704081bf88333e57c5031c"
"order_id": "a13004c9ba18459586212b7155d7348e"
};
var bodi = jsonEncode(data);
var apiresults = await http.post(Uri.parse(apiUrl), body: bodi);
var jsonObject = jsonDecode(apiresults.body);
List<dynamic> orderDetailCount = (jsonObject
as Map<dynamic, dynamic>)['data']['order']['order_detail'];
// List<dynamic> listCustomerOrder =
// (jsonObject as Map<dynamic, dynamic>)['data']['order'];
// for (int i = 0; i < listCustomerOrder.length; i++) {
// customerOrdersList
// .add(CustomerOrders.createCustomerOrder(listCustomerOrder[i]));
// }
var jsonMap = jsonObject['data']['order'];
String orderuserName = jsonMap['order_user_name'];
String total = jsonMap['total'];
String discountAmount = jsonMap['discount_amount'];
int orderCounts = orderDetailCount.length;
String subtotal = jsonMap['subtotal'];
// CustomerOrders(
// order_user_name: orderuserName,
// total: total,
// discount_amount: discountAmount,
// subtotal: subtotal);
String tax = jsonMap['tax_amount'];
customerOrdersList.order_user_name = orderuserName;
customerOrdersList.total = total;
customerOrdersList.discount_amount = discountAmount;
customerOrdersList.orderCount = orderCounts;
customerOrdersList.subtotal = subtotal;
customerOrdersList.tax = tax;
return customerOrdersList;
} catch (e) {
......@@ -55,4 +47,31 @@ class Api {
return customerOrdersList;
}
}
static Future<List<CustomerOrdersDetail>> getOrderDetail() async {
String apiUrl = getOrdersUrl;
try {
List<CustomerOrdersDetail> listOrderDetail = [];
Map data = {
"session_key": "d289c7d6dfc04690b4149b93c91aef8a",
"user_id": "d31d7ad3ba864ea39300cb99c9e2ac3f",
"ignore_lock": "",
"order_id": "a13004c9ba18459586212b7155d7348e"
};
var bodi = jsonEncode(data);
var apiresults = await http.post(Uri.parse(apiUrl), body: bodi);
var jsonObject = jsonDecode(apiresults.body);
List<dynamic> listDetail = (jsonObject as Map<dynamic, dynamic>)['data']
['order']['order_detail'];
for (int i = 0; i < listDetail.length; i++) {
listOrderDetail
.add(CustomerOrdersDetail.createOrderDetail(listDetail[i]));
}
return listOrderDetail;
} catch (e) {
print(e);
return [];
}
}
}
import 'package:second_display/api/api.dart';
import 'package:second_display/models/order_detail.dart';
import 'package:bloc/bloc.dart';
class OrderDetailBloc extends Cubit<List<CustomerOrdersDetail>> {
OrderDetailBloc() : super([]);
Future<List<CustomerOrdersDetail>> getData() async {
var orderDetail = await Api.getOrderDetail();
return orderDetail;
}
void getOrderDetailList() {
getData().then((value) {
emit(value);
});
}
}
......@@ -9,7 +9,8 @@ class OrdersBloc extends Cubit<CustomerOrders> {
total: "",
discount_amount: "",
orderCount: 0,
subtotal: ""));
subtotal: "",
tax: "0"));
Future<CustomerOrders> getData() async {
return await Api.getOrders();
......
import 'package:flutter/material.dart';
final Color textColor = Colors.white;
final Color colorBackgroundOrder = Colors.black.withOpacity(0.8);
final Color colorBackgroundCarousel = Colors.black;
final String getOrdersUrl = "http://192.168.2.142:8001/midware/order/get_by_id";
final List<String> imgList = [
......
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:second_display/bloc/order_detail.dart';
import 'package:second_display/bloc/orders_bloc.dart';
import 'package:second_display/ui/main_page.dart';
import 'package:url_strategy/url_strategy.dart';
......@@ -16,8 +17,11 @@ class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (_) => OrdersBloc(),
return MultiBlocProvider(
providers: [
BlocProvider(create: (_) => OrdersBloc()),
BlocProvider(create: (_) => OrderDetailBloc()),
],
child: MaterialApp(
debugShowCheckedModeBanner: false,
initialRoute: '/',
......
class CustomerOrders {
late String order_user_name;
class CustomerOrdersDetail {
late String name;
late String total;
late String discount_amount;
// final List<dynamic> list_order_detail;
late String subtotal;
CustomerOrders(
{required this.order_user_name,
required this.total,
required this.discount_amount,
// required this.list_order_detail,
required this.subtotal});
CustomerOrdersDetail({required this.name, required this.total});
factory CustomerOrdersDetail.createOrderDetail(Map<String, dynamic> json) {
return CustomerOrdersDetail(
name: json['name'].toString(),
total: json['subtotal'].toString(),
);
}
}
......@@ -4,11 +4,13 @@ class CustomerOrders {
late String discount_amount;
late int orderCount;
late String subtotal;
late String tax;
CustomerOrders(
{required this.order_user_name,
required this.total,
required this.discount_amount,
required this.orderCount,
required this.subtotal});
required this.subtotal,
required this.tax});
}
......@@ -58,7 +58,7 @@ class _CarouselIndicatorState extends State<CarouselIndicator> {
Widget build(BuildContext context) {
return Scaffold(
body: Container(
color: Colors.black,
color: colorBackgroundCarousel,
child: Column(children: [
Expanded(
child: CarouselSlider(
......@@ -68,7 +68,6 @@ class _CarouselIndicatorState extends State<CarouselIndicator> {
autoPlay: true,
autoPlayInterval: const Duration(seconds: 5),
enlargeCenterPage: true,
aspectRatio: 2.0,
onPageChanged: (index, reason) {
setState(() {
_current = index;
......@@ -82,16 +81,14 @@ class _CarouselIndicatorState extends State<CarouselIndicator> {
return GestureDetector(
onTap: () => _controller.animateToPage(entry.key),
child: Container(
width: 12.0,
height: 12.0,
margin:
EdgeInsets.symmetric(vertical: 8.0, horizontal: 4.0),
width: MediaQuery.of(context).size.width * 0.012,
height: MediaQuery.of(context).size.height * 0.012,
margin: EdgeInsets.symmetric(
vertical: MediaQuery.of(context).size.height * 0.008,
horizontal: MediaQuery.of(context).size.width * 0.0004,
),
decoration: BoxDecoration(
shape: BoxShape.circle,
// color: (Theme.of(context).brightness == Brightness.dark
// ? Colors.white
// : Colors.black)
// .withOpacity(_current == entry.key ? 0.9 : 0.4)),
color: Colors.white
.withOpacity(_current == entry.key ? 0.8 : 0.4))),
);
......
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:second_display/bloc/order_detail.dart';
import 'package:second_display/bloc/orders_bloc.dart';
import 'package:second_display/helper/config.dart';
import 'package:second_display/ui/carousel.dart';
import 'package:second_display/ui/orders.dart';
......@@ -10,6 +12,7 @@ class MainPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
context.read<OrdersBloc>().getOrderList();
context.read<OrderDetailBloc>().getOrderDetailList();
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
......@@ -24,7 +27,7 @@ class MainPage extends StatelessWidget {
Container(
height: MediaQuery.of(context).size.height,
width: MediaQuery.of(context).size.width * 0.4,
color: Colors.black.withOpacity(0.8),
color: colorBackgroundOrder,
child: OrderPage(),
)
],
......
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:second_display/api/api.dart';
import 'package:second_display/bloc/order_detail.dart';
import 'package:second_display/bloc/orders_bloc.dart';
import 'package:second_display/helper/config.dart';
import 'package:second_display/models/order_detail.dart';
import 'package:second_display/models/orders.dart';
import 'package:intl/intl.dart';
......@@ -16,9 +17,11 @@ class OrderPage extends StatelessWidget {
var totalAmount = double.tryParse(list.total) ?? 0;
var discountAmount = double.tryParse(list.discount_amount) ?? 0;
var subTotalAmount = double.tryParse(list.subtotal) ?? 0;
var taxAmount = double.tryParse(list.tax) ?? 0;
var totalAmountText = formatCurrency().format(totalAmount);
var discountAmountText = formatCurrency().format(discountAmount);
var subTotalAmountText = formatCurrency().format(subTotalAmount);
var taxAmountText = formatCurrency().format(taxAmount);
return Container(
// color: Colors.black.withOpacity(0.8),
margin: EdgeInsets.fromLTRB(
......@@ -46,9 +49,15 @@ class OrderPage extends StatelessWidget {
Container(
// color: Colors.blue,
height: MediaQuery.of(context).size.height * 0.5,
child: ListView.builder(
itemCount: list.orderCount,
child: BlocBuilder<OrderDetailBloc, List<CustomerOrdersDetail>>(
builder: (context, detailOrder) {
return ListView.builder(
itemCount: detailOrder.length,
itemBuilder: (context, i) {
var amountEachOrder =
double.tryParse(detailOrder[i].total) ?? 0;
var amountEachOrderText =
formatCurrency().format(amountEachOrder);
return Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
......@@ -58,14 +67,17 @@ class OrderPage extends StatelessWidget {
margin: EdgeInsets.only(
top: MediaQuery.of(context).size.height *
0.005,
bottom: MediaQuery.of(context).size.height *
bottom:
MediaQuery.of(context).size.height *
0.005),
child: Row(
children: [
listOforder(context, Alignment.centerLeft,
"1 Kopi Pandan"),
listOforder(context, Alignment.centerRight,
"Rp 30.000")
"1 " + detailOrder[i].name),
listOforder(
context,
Alignment.centerRight,
amountEachOrderText)
],
),
)
......@@ -74,6 +86,8 @@ class OrderPage extends StatelessWidget {
],
);
},
);
},
),
),
Expanded(
......@@ -96,14 +110,18 @@ class OrderPage extends StatelessWidget {
style: TextStyle(
color: textColor,
fontSize:
MediaQuery.of(context).size.height * 0.05),
MediaQuery.of(context).size.height * 0.046),
),
SizedBox(
height: MediaQuery.of(context).size.height * 0.01),
height: MediaQuery.of(context).size.height * 0.005),
listTotalRincian(
context,
list.orderCount.toString() + " Item",
subTotalAmountText + ",-"),
listTotalRincian(
context, "5 Items", subTotalAmountText + ",-"),
context, "Diskon", discountAmountText + ",-"),
listTotalRincian(
context, "Discount", discountAmountText + ",-"),
context, "Pajak", taxAmountText + ",-"),
SizedBox(
height: MediaQuery.of(context).size.height * 0.02),
listTotalRincian(
......
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