Commit 04a97fbd authored by Dio Maulana's avatar Dio Maulana

config from API and add Video

parent cfeb0e2f
This diff is collapsed.
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/config_display.dart';
import 'package:second_display/models/order_detail.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;
import 'package:flutter/services.dart' as bundel_root;
class Api { class Api {
static Future<CustomerOrders> getOrders() async { static Future<CustomerOrders> getOrders() async {
String apiUrl = getOrdersUrl; /// url get data dari midware getby id, need session
CustomerOrders customerOrdersList = CustomerOrders( // String apiUrl = getOrdersUrl;
order_user_name: "",
total: "0.0", /// url get data dari midware getorder, no need session
discount_amount: "0.0", String apiUrl = getJsonUrl;
orderCount: 0,
subtotal: "0.0", CustomerOrders customerOrdersList = modelCustomerOrder;
tax: "0");
try { try {
Map data = { /// load data dari json local
"session_key": "d289c7d6dfc04690b4149b93c91aef8a", // String datas = await bundel_root.rootBundle.loadString('file.json');
"user_id": "d31d7ad3ba864ea39300cb99c9e2ac3f", // var jsonObject = jsonDecode(datas);
"ignore_lock": "", /// load data dari json local
"order_id": "a13004c9ba18459586212b7155d7348e"
}; /// load data dari api midware getby id
// 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);
/// load data dari api midware getby id
/// load data dari midwar file json
Map data = {};
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);
/// load data dari midwar file json
List<dynamic> orderDetailCount = (jsonObject List<dynamic> orderDetailCount = (jsonObject
as Map<dynamic, dynamic>)['data']['order']['order_detail']; as Map<dynamic, dynamic>)['data']['order']['order_detail'];
var jsonMap = jsonObject['data']['order']; var jsonMap = jsonObject['data']['order'];
String orderuserName = jsonMap['order_user_name']; String orderuserName = jsonMap['id'].substring(0, 5);
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']; String tax = jsonMap['tax_amount'];
customerOrdersList.order_user_name = orderuserName; String pax = jsonMap['pax'].toString();
String tableName = jsonMap['table_name'];
String tableSecName = jsonMap['table_section_name'];
String dateOrder = jsonMap['start_time'];
String orderusername = jsonMap['order_user_name'];
customerOrdersList.id = 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; customerOrdersList.tax = tax;
customerOrdersList.pax = pax;
customerOrdersList.table_name = tableName;
customerOrdersList.table_section_name = tableSecName;
customerOrdersList.dateOrder = dateOrder;
customerOrdersList.order_user_name = orderusername;
return customerOrdersList; return customerOrdersList;
} catch (e) { } catch (e) {
...@@ -49,24 +80,55 @@ class Api { ...@@ -49,24 +80,55 @@ class Api {
} }
static Future<List<CustomerOrdersDetail>> getOrderDetail() async { static Future<List<CustomerOrdersDetail>> getOrderDetail() async {
String apiUrl = getOrdersUrl; // String apiUrl = getOrdersUrl;
String apiUrl = getJsonUrl;
try { try {
List<CustomerOrdersDetail> listOrderDetail = []; List<CustomerOrdersDetail> listOrderDetail = [];
Map data = {
"session_key": "d289c7d6dfc04690b4149b93c91aef8a", /// load data dari json local
"user_id": "d31d7ad3ba864ea39300cb99c9e2ac3f", // String datas = await bundel_root.rootBundle.loadString('file.json');
"ignore_lock": "", // var jsonObject = jsonDecode(datas);
"order_id": "a13004c9ba18459586212b7155d7348e" /// load data dari json local
};
/// load data dari api midware getby id
// 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);
/// load data dari api midware getby id
/// load data dari midwar file json
Map data = {};
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);
/// load data dari midwar file json
List<dynamic> listDetail = (jsonObject as Map<dynamic, dynamic>)['data'] List<dynamic> listDetail = (jsonObject as Map<dynamic, dynamic>)['data']
['order']['order_detail']; ['order']['order_detail'];
for (int i = 0; i < listDetail.length; i++) { for (int i = 0; i < listDetail.length; i++) {
listOrderDetail listOrderDetail
.add(CustomerOrdersDetail.createOrderDetail(listDetail[i])); .add(CustomerOrdersDetail.createOrderDetail(listDetail[i]));
// List<dynamic> optionOrderDetail =
// (jsonObject as Map<dynamic, dynamic>)['data']['order']
// ['order_detail'][i]['order_detail_options'];
// print(optionOrderDetail.length);
// if (optionOrderDetail.isNotEmpty) {
// for (int j = 0; j < optionOrderDetail.length; j++) {
// listOrderDetail.add(
// CustomerOrdersDetail(optionName: optionOrderDetail[j]['name']));
// }
// }
} }
return listOrderDetail; return listOrderDetail;
} catch (e) { } catch (e) {
...@@ -74,4 +136,26 @@ class Api { ...@@ -74,4 +136,26 @@ class Api {
return []; return [];
} }
} }
static Future<List<ConfigDisplay>> getConfigDisplay() async {
String apiUrl = apiUrlConfig;
List<ConfigDisplay> configList = [];
try {
Map data = {};
var bodi = jsonEncode(data);
var apiresults = await http.post(Uri.parse(apiUrl), body: bodi);
var jsonObject = jsonDecode(apiresults.body);
List<dynamic> listConfig = (jsonObject as Map<dynamic, dynamic>)['data'];
for (int i = 0; i < listConfig.length; i++) {
configList.add(ConfigDisplay.createConfig(listConfig[i]));
}
return configList;
} catch (e) {
return [];
}
}
} }
import 'package:second_display/api/api.dart';
import 'package:second_display/models/config_display.dart';
import 'package:bloc/bloc.dart';
class ConfigDisplayBloc extends Cubit<List<ConfigDisplay>> {
ConfigDisplayBloc() : super([]);
Future<List<ConfigDisplay>> getData() async {
var orderDetail = await Api.getConfigDisplay();
return orderDetail;
}
void getConfigDisplay() {
getData().then((value) {
emit(value);
});
}
}
import 'package:second_display/api/api.dart'; import 'package:second_display/api/api.dart';
import 'package:second_display/helper/config.dart';
import 'package:second_display/models/orders.dart'; import 'package:second_display/models/orders.dart';
import 'package:bloc/bloc.dart'; import 'package:bloc/bloc.dart';
class OrdersBloc extends Cubit<CustomerOrders> { class OrdersBloc extends Cubit<CustomerOrders> {
OrdersBloc() OrdersBloc() : super(modelCustomerOrder);
: super(CustomerOrders(
order_user_name: "",
total: "",
discount_amount: "",
orderCount: 0,
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';
import 'package:second_display/models/orders.dart';
final Color textColor = Colors.white; // final Color textColor = Colors.white;
final Color colorBackgroundOrder = Colors.black.withOpacity(0.8); // 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 String apiUrlConfig =
"http://192.168.2.142:8001/queue/config_second_display";
final String getJsonUrl =
"http://192.168.2.142:8001/midware/order/get_for_second_display";
late CustomerOrders modelCustomerOrder = CustomerOrders(
id: "",
total: "",
discount_amount: "",
orderCount: 0,
subtotal: "",
tax: "0",
pax: "0",
table_name: "",
table_section_name: "",
dateOrder: "",
order_user_name: "");
final List<String> imgList = [ final List<String> imgList = [
'https://images.unsplash.com/photo-1520342868574-5fa3804e551c?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=6ff92caffcdd63681a35134a6770ed3b&auto=format&fit=crop&w=1951&q=80', 'https://images.unsplash.com/photo-1520342868574-5fa3804e551c?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=6ff92caffcdd63681a35134a6770ed3b&auto=format&fit=crop&w=1951&q=80',
......
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/config_display_blog.dart';
import 'package:second_display/bloc/order_detail.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:second_display/ui/splash.dart';
import 'package:url_strategy/url_strategy.dart'; import 'package:url_strategy/url_strategy.dart';
void main() async { void main() async {
...@@ -21,12 +23,14 @@ class MyApp extends StatelessWidget { ...@@ -21,12 +23,14 @@ class MyApp extends StatelessWidget {
providers: [ providers: [
BlocProvider(create: (_) => OrdersBloc()), BlocProvider(create: (_) => OrdersBloc()),
BlocProvider(create: (_) => OrderDetailBloc()), BlocProvider(create: (_) => OrderDetailBloc()),
BlocProvider(create: (_) => ConfigDisplayBloc())
], ],
child: MaterialApp( child: MaterialApp(
debugShowCheckedModeBanner: false, debugShowCheckedModeBanner: false,
initialRoute: '/', initialRoute: '/',
routes: { routes: {
'/': (context) => const MainPage(), '/': (context) => Splash(),
'/main': (context) => MainPage(),
}, },
), ),
); );
......
class ConfigDisplay {
final String backgroundColorCarouselVideo;
final String textColor;
final String backgroundColorOrder;
final int isVideo;
ConfigDisplay(
{required this.backgroundColorCarouselVideo,
required this.textColor,
required this.backgroundColorOrder,
required this.isVideo});
factory ConfigDisplay.createConfig(Map<String, dynamic> json) {
return ConfigDisplay(
backgroundColorCarouselVideo:
json['background_color_carousel_video'].toString(),
textColor: json['text_color'].toString(),
backgroundColorOrder: json['background_color_order'],
isVideo: json['is_video']);
}
}
class CustomerOrdersDetail { class CustomerOrdersDetail {
late String name; late String name;
late String total; late String total;
late String quantity;
late String optionOrder;
CustomerOrdersDetail({required this.name, required this.total}); CustomerOrdersDetail({
this.name = "",
this.total = "",
this.quantity = "",
this.optionOrder = "",
});
factory CustomerOrdersDetail.createOrderDetail(Map<String, dynamic> json) { factory CustomerOrdersDetail.createOrderDetail(Map<String, dynamic> json) {
return CustomerOrdersDetail( return CustomerOrdersDetail(
name: json['name'].toString(), name: json['name'].toString(),
total: json['subtotal'].toString(), total: json['subtotal'].toString(),
); quantity: json['quantity'].toString(),
optionOrder: json['order_options']);
} }
} }
class CustomerOrders { class CustomerOrders {
late String order_user_name; late String id;
late String total; late String total;
late String discount_amount; late String discount_amount;
late int orderCount; late int orderCount;
late String subtotal; late String subtotal;
late String tax; late String tax;
late String pax;
late String table_name;
late String table_section_name;
late String dateOrder;
late String order_user_name;
CustomerOrders( CustomerOrders({
{required this.order_user_name, required this.id,
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}); required this.tax,
required this.pax,
required this.table_name,
required this.table_section_name,
required this.dateOrder,
required this.order_user_name,
});
} }
...@@ -3,8 +3,9 @@ import 'package:flutter/material.dart'; ...@@ -3,8 +3,9 @@ import 'package:flutter/material.dart';
import 'package:second_display/helper/config.dart'; import 'package:second_display/helper/config.dart';
class CarouselIndicator extends StatefulWidget { class CarouselIndicator extends StatefulWidget {
const CarouselIndicator({Key? key}) : super(key: key); final Color backgroundColor;
const CarouselIndicator({Key? key, required this.backgroundColor})
: super(key: key);
@override @override
State<CarouselIndicator> createState() => _CarouselIndicatorState(); State<CarouselIndicator> createState() => _CarouselIndicatorState();
} }
...@@ -58,7 +59,7 @@ class _CarouselIndicatorState extends State<CarouselIndicator> { ...@@ -58,7 +59,7 @@ class _CarouselIndicatorState extends State<CarouselIndicator> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
body: Container( body: Container(
color: colorBackgroundCarousel, color: widget.backgroundColor,
child: Column(children: [ child: Column(children: [
Expanded( Expanded(
child: CarouselSlider( child: CarouselSlider(
......
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/config_display_blog.dart';
import 'package:second_display/bloc/order_detail.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/models/config_display.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';
import 'package:second_display/ui/video_promotion.dart';
// ignore: must_be_immutable
class MainPage extends StatelessWidget { class MainPage extends StatelessWidget {
const MainPage({Key? key}) : super(key: key); MainPage({Key? key}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
context.read<OrdersBloc>().getOrderList(); context.read<OrdersBloc>().getOrderList();
context.read<OrderDetailBloc>().getOrderDetailList(); context.read<OrderDetailBloc>().getOrderDetailList();
return MaterialApp( return MaterialApp(
debugShowCheckedModeBanner: false, debugShowCheckedModeBanner: false,
home: Scaffold( home: Scaffold(body: BlocBuilder<ConfigDisplayBloc, List<ConfigDisplay>>(
body: Row( builder: (context, configState) {
int valueIntBackgroundColorCarouselVideo =
int.parse(configState[0].backgroundColorCarouselVideo, radix: 16);
final Color colorBackgroundCarouselandVideo =
Color(valueIntBackgroundColorCarouselVideo);
int valueIntTextColor =
int.parse(configState[0].textColor, radix: 16);
final Color textColor = Color(valueIntTextColor);
int valueIntBackgroundColorOrder =
int.parse(configState[0].backgroundColorOrder, radix: 16);
final Color backgroundColorOrder =
Color(valueIntBackgroundColorOrder);
return Row(
children: [ children: [
Container( (configState[0].isVideo == 1)
? Container(
height: MediaQuery.of(context).size.height, height: MediaQuery.of(context).size.height,
width: MediaQuery.of(context).size.width * 0.6, width: MediaQuery.of(context).size.width * 0.6,
// color: Colors.red, color: colorBackgroundCarouselandVideo,
child: CarouselIndicator(), child: VideoPromotion(),
)
: Container(
height: MediaQuery.of(context).size.height,
width: MediaQuery.of(context).size.width * 0.6,
child: CarouselIndicator(
backgroundColor: colorBackgroundCarouselandVideo),
), ),
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: colorBackgroundOrder, color: backgroundColorOrder,
child: OrderPage(), child: OrderPage(textColor: textColor),
) )
], ],
);
},
)), )),
); );
} }
......
This diff is collapsed.
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:loading_animations/loading_animations.dart';
import 'package:second_display/bloc/config_display_blog.dart';
import 'package:second_display/ui/main_page.dart';
class Splash extends StatefulWidget {
const Splash({Key? key}) : super(key: key);
@override
State<Splash> createState() => _SplashState();
}
class _SplashState extends State<Splash> {
// bool isLoaded = false;
// Future<List<ConfigApl>> config({url = ""}) async {
// // String? base_urlapi = prefs.getString('base_url');
// List<ConfigApl> apiConfigs = [];
// try {
// var apiConfig = await Api.getConfig(url: url);
// apiConfigs = apiConfig;
// return apiConfigs;
// } catch (e) {
// return apiConfigs;
// }
// }
@override
void initState() {
Future.delayed(const Duration(seconds: 2), () {
Navigator.push(context, MaterialPageRoute(builder: (_) => MainPage()));
});
super.initState();
}
@override
Widget build(BuildContext context) {
context.read<ConfigDisplayBloc>().getConfigDisplay();
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
"Please wait",
style: TextStyle(
fontSize: MediaQuery.of(context).size.height * 0.03,
fontWeight: FontWeight.w500,
color: Colors.black,
decoration: TextDecoration.none),
),
LoadingBumpingLine.circle(
size: MediaQuery.of(context).size.height * 0.1,
backgroundColor: Colors.black,
)
],
);
}
}
import 'package:flutter/material.dart';
import 'package:loading_animations/loading_animations.dart';
import 'package:video_player/video_player.dart';
class VideoPromotion extends StatefulWidget {
const VideoPromotion({Key? key}) : super(key: key);
@override
State<VideoPromotion> createState() => _VideoPromotionState();
}
class _VideoPromotionState extends State<VideoPromotion> {
VideoPlayerController? _controller;
@override
void initState() {
_controller = VideoPlayerController.network(
'https://media.istockphoto.com/videos/man-in-formal-suit-dancing-and-throwing-money-video-id892877794')
..setLooping(true)
..initialize().then((_) {
// Ensure the first frame is shown after the video is initialized, even before the play button has been pressed.
setState(() {});
});
_controller!.setVolume(0);
_controller!.play();
super.initState();
}
@override
Widget build(BuildContext context) {
return Center(
child: Container(
// color: Colors.green,
margin: EdgeInsets.fromLTRB(
MediaQuery.of(context).size.width * 0.05,
MediaQuery.of(context).size.height * 0.1,
MediaQuery.of(context).size.width * 0.05,
MediaQuery.of(context).size.height * 0.1),
child: _controller!.value.isInitialized
? AspectRatio(
aspectRatio: _controller!.value.aspectRatio,
child: VideoPlayer(_controller!),
)
: Center(
child: Container(
child: LoadingBumpingLine.circle(
size: MediaQuery.of(context).size.height * 0.1,
backgroundColor: Colors.black,
),
),
)),
);
}
}
...@@ -57,6 +57,13 @@ packages: ...@@ -57,6 +57,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.15.0" version: "1.15.0"
csslib:
dependency: transitive
description:
name: csslib
url: "https://pub.dartlang.org"
source: hosted
version: "0.17.1"
cupertino_icons: cupertino_icons:
dependency: "direct main" dependency: "direct main"
description: description:
...@@ -100,6 +107,13 @@ packages: ...@@ -100,6 +107,13 @@ packages:
description: flutter description: flutter
source: sdk source: sdk
version: "0.0.0" version: "0.0.0"
html:
dependency: transitive
description:
name: html
url: "https://pub.dartlang.org"
source: hosted
version: "0.15.0"
http: http:
dependency: "direct main" dependency: "direct main"
description: description:
...@@ -135,6 +149,13 @@ packages: ...@@ -135,6 +149,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.1" version: "1.0.1"
loading_animations:
dependency: "direct main"
description:
name: loading_animations
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.0"
matcher: matcher:
dependency: transitive dependency: transitive
description: description:
...@@ -170,6 +191,13 @@ packages: ...@@ -170,6 +191,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.8.0" version: "1.8.0"
plugin_platform_interface:
dependency: transitive
description:
name: plugin_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.2"
provider: provider:
dependency: transitive dependency: transitive
description: description:
...@@ -245,6 +273,41 @@ packages: ...@@ -245,6 +273,41 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.1" version: "2.1.1"
video_player:
dependency: "direct main"
description:
name: video_player
url: "https://pub.dartlang.org"
source: hosted
version: "2.3.0"
video_player_android:
dependency: transitive
description:
name: video_player_android
url: "https://pub.dartlang.org"
source: hosted
version: "2.3.1"
video_player_avfoundation:
dependency: transitive
description:
name: video_player_avfoundation
url: "https://pub.dartlang.org"
source: hosted
version: "2.3.1"
video_player_platform_interface:
dependency: transitive
description:
name: video_player_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "5.1.0"
video_player_web:
dependency: transitive
description:
name: video_player_web
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.7"
sdks: sdks:
dart: ">=2.16.1 <3.0.0" dart: ">=2.16.1 <3.0.0"
flutter: ">=1.20.0" flutter: ">=2.8.0"
...@@ -34,7 +34,9 @@ dependencies: ...@@ -34,7 +34,9 @@ dependencies:
flutter_bloc: ^8.0.1 flutter_bloc: ^8.0.1
http: ^0.13.4 http: ^0.13.4
intl: ^0.17.0 intl: ^0.17.0
loading_animations: ^2.2.0
url_strategy: ^0.2.0 url_strategy: ^0.2.0
video_player: ^2.3.0
dev_dependencies: dev_dependencies:
flutter_lints: ^1.0.0 flutter_lints: ^1.0.0
...@@ -51,8 +53,8 @@ flutter: ...@@ -51,8 +53,8 @@ flutter:
# the material Icons class. # the material Icons class.
uses-material-design: true uses-material-design: true
# To add assets to your application, add an assets section, like this: # To add assets to your application, add an assets section, like this:
# assets: assets:
# - images/a_dot_burr.jpeg - assets/file.json
# - images/a_dot_ham.jpeg # - images/a_dot_ham.jpeg
# An image asset can refer to one or more resolution-specific "variants", see # An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware. # https://flutter.dev/assets-and-images/#resolution-aware.
......
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