Commit cfeb0e2f authored by Dio Maulana's avatar Dio Maulana

second display

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