import 'dart:io'; import 'package:bbm_tracking/bloc/bbm_bloc.dart'; import 'package:bbm_tracking/model/kendaraan_m.dart'; import 'package:bbm_tracking/model/transaksi_m.dart'; import 'package:bbm_tracking/pages/AboutApps/index.dart'; import 'package:bbm_tracking/pages/form-tambah-data-bensin/index.dart'; import 'package:bbm_tracking/pages/kendaraan/form-tambah-kendaraan/form.dart'; import 'package:bbm_tracking/pages/kendaraan/index_kendaraan.dart'; import 'package:bbm_tracking/repository/kendaraan/kendaraan_repository.dart'; import 'package:bbm_tracking/repository/transaksi/transaksi_repository.dart'; import 'package:bbm_tracking/resource/component-bersama/chart.dart'; import 'package:bbm_tracking/pages/mainMenu/component/item_bensin.dart'; import 'package:bbm_tracking/pages/mainMenu/index.dart'; import 'package:bbm_tracking/pages/riwayat/index.dart'; import 'package:bbm_tracking/resource/popup/popup.dart'; import 'package:camera/camera.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:geolocator/geolocator.dart'; import 'package:pandabar/main.view.dart'; import 'package:pandabar/model.dart'; class Home extends StatefulWidget { final String screen; final String param; Home(this.screen, this.param); @override State createState() => _HomeState(); } class _HomeState extends State { late String screen = 'home'; late String param; late List dataKendaraan; late KendaraanModel dt; late bool paramKendaran = false; late int paramText = 0; late bool cond = false; var firstCamera; late bool _gpsEnable; void ButtonAddTransaksi() { if (dataKendaraan != null || dataKendaraan.length != 0) { for (KendaraanModel element in dataKendaraan) { if (element.status == 1) { paramKendaran = true; dt = element; cond = true; paramText = 2; break; } paramKendaran = false; paramText = 1; } } else { paramKendaran = false; paramText = 0; } paramKendaran ? Navigator.of(context).push( MaterialPageRoute( builder: (context) => FormTamabahDataBensin( kendaraanModel: dt, camera: firstCamera, key: UniqueKey(), ), ), ) : showDialog( context: context, builder: (BuildContext context) { return PopUp( text: paramText == 1 ? "Maaf, Silakan aktifkan kendaraan Anda terlebih dahulu" : "Maaf, Silakan tambahkan kendaraan Anda terlebih dahulu", param: "negative", ); }, ); } @override void initState() { // TODO: implement initState super.initState(); screen = widget.screen; param = widget.param; context.read()..add(BBMStarted()); // setState(() { // widget.screen != null ? screen = "${widget.screen}" : screen = "home"; // }); initilizeCamera(); checkGPS(); } Future checkGPS() async { bool serviceEnabled; LocationPermission permission; // Test if location services are enabled. serviceEnabled = await Geolocator.isLocationServiceEnabled(); if (!serviceEnabled) { // Location services are not enabled don't continue // accessing the position and request users of the // App to enable the location services. return Future.error('Location services are disabled.'); } else { _gpsEnable = true; } permission = await Geolocator.checkPermission(); if (permission == LocationPermission.denied) { permission = await Geolocator.requestPermission(); if (permission == LocationPermission.denied) { // Permissions are denied, next time you could try // requesting permissions again (this is also where // Android's shouldShowRequestPermissionRationale // returned true. According to Android guidelines // your App should show an explanatory UI now. return Future.error('Location permissions are denied'); } } if (permission == LocationPermission.deniedForever) { // Permissions are denied forever, handle appropriately. return Future.error( 'Location permissions are permanently denied, we cannot request permissions.'); } // When we reach here, permissions are granted and we can // continue accessing the position of the device. return await Geolocator.getCurrentPosition(); } Future initilizeCamera() async { WidgetsFlutterBinding.ensureInitialized(); // Obtain a list of the available cameras on the device. final cameras = await availableCameras(); // Get a specific camera from the list of available cameras. setState(() { firstCamera = cameras.first; }); } Future _onWillPop() async { showDialog( context: context, builder: (context) { return AlertDialog( title: new Text('Apa Kamu Yakin?'), content: new Text('Kamu ingin Keluar Aplikasi'), actions: [ TextButton( onPressed: () => Navigator.of(context).pop(false), child: new Text('No'), ), TextButton( onPressed: () => SystemNavigator.pop(), child: new Text('Yes'), ), ], ); }, ); return false; } // String page = 'home'; @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Color(0xffE3EAEA), bottomNavigationBar: PandaBar( backgroundColor: Color(0xFFD2E1E1), buttonSelectedColor: Color(0xFFFC8D05), fabColors: [Color(0xFFFC8D05), Color(0xFFDDB05E)], buttonData: [ PandaBarButtonData( id: 'home', icon: Icons.home, title: 'Home', ), PandaBarButtonData( id: 'kendaraan', icon: Icons.directions_car_filled_outlined, title: 'Kendaraan', ), PandaBarButtonData( id: 'riwayat', icon: Icons.account_balance_wallet_outlined, title: 'Riwayat', ), PandaBarButtonData( id: 'tentang', icon: Icons.assignment_late_outlined, title: 'Tentang', ), ], onChange: (id) { setState(() { screen = id; }); }, onFabButtonPressed: () { ButtonAddTransaksi(); }, ), body: BlocBuilder( builder: (context, state) { if (state is BBMLoaded) { dataKendaraan = state.kendaraan; return WillPopScope( onWillPop: () => _onWillPop(), child: SafeArea( child: Padding( padding: EdgeInsets.only( left: 10, right: 10, ), child: Builder( builder: (context) { // print("screen = " + param); switch (screen) { case 'home': return IndexMainMenu(); case 'kendaraan': // context.read().add(BBMAllDataKendaraan()); return IndexKendaraan(); case 'riwayat': return Riwayat( dataKendaraan, key: UniqueKey(), data: state.transaksi, ); case 'tentang': return AboutApps(); default: return IndexMainMenu(); } }, ), ), ), ); } return Container(); }, ), ); } }