start minimal
This commit is contained in:
15
lib/common/ui/widgets/uis.dart
Normal file
15
lib/common/ui/widgets/uis.dart
Normal file
@ -0,0 +1,15 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:rogapp/theme/theme.dart';
|
||||
|
||||
class UIs{
|
||||
static AppBar appBar(){
|
||||
return AppBar(
|
||||
title: const Icon(
|
||||
Icons.access_alarm,
|
||||
size:30,
|
||||
color: Pallete.WHITE_COLOR,
|
||||
),
|
||||
centerTitle: true,
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -8,6 +8,7 @@ import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:permission_handler/permission_handler.dart';
|
||||
import 'package:rogapp/pages/index/index_binding.dart';
|
||||
import 'package:rogapp/routes/app_pages.dart';
|
||||
import 'package:rogapp/theme/theme.dart';
|
||||
import 'package:rogapp/utils/string_values.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:path/path.dart' as p;
|
||||
@ -46,18 +47,14 @@ class MyApp extends StatelessWidget {
|
||||
//locale: const Locale('en', 'US'),
|
||||
fallbackLocale: const Locale('en', 'US'),
|
||||
title: 'ROGAINING',
|
||||
theme: ThemeData(
|
||||
primarySwatch: Colors.blue,
|
||||
visualDensity: VisualDensity.adaptivePlatformDensity,
|
||||
textTheme: GoogleFonts.muliTextTheme(),
|
||||
),
|
||||
theme: AppTheme.theme,
|
||||
debugShowCheckedModeBanner: false,
|
||||
defaultTransition: Transition.cupertino,
|
||||
opaqueRoute: Get.isOpaqueRouteDefault,
|
||||
popGesture: Get.isPopGestureEnable,
|
||||
transitionDuration: const Duration(milliseconds: 230),
|
||||
initialBinding: IndexBinding(), //HomeBinding(),
|
||||
initialRoute: AppPages.PERMISSION,
|
||||
//initialBinding: IndexBinding(), //HomeBinding(),
|
||||
initialRoute: AppPages.S_LOGIN,
|
||||
getPages: AppPages.routes,
|
||||
enableLog: true,
|
||||
);
|
||||
|
||||
@ -1,156 +1,233 @@
|
||||
import 'dart:ffi';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:permission_handler/permission_handler.dart';
|
||||
import 'package:rogapp/routes/app_pages.dart';
|
||||
|
||||
class PermissionHandlerScreen extends StatefulWidget {
|
||||
PermissionHandlerScreen({Key? key}) : super(key: key);
|
||||
const PermissionHandlerScreen({super.key});
|
||||
|
||||
@override
|
||||
State<PermissionHandlerScreen> createState() => _PermissionHandlerScreenState();
|
||||
}
|
||||
|
||||
class _PermissionHandlerScreenState extends State<PermissionHandlerScreen> {
|
||||
|
||||
|
||||
Future<void> _showMyDialog() async {
|
||||
return showDialog<void>(
|
||||
context: context,
|
||||
barrierDismissible: false, // user must tap button!
|
||||
builder: (BuildContext context) {
|
||||
return AlertDialog(
|
||||
title: const Text('ロケーション許可'),
|
||||
content: SingleChildScrollView(
|
||||
child: ListBody(
|
||||
children: const <Widget>[
|
||||
Text( 'このアプリでは、位置情報の収集を行います。'),
|
||||
Text( 'このアプリでは、開始時点で位置情報を収集します。'),
|
||||
],
|
||||
),
|
||||
),
|
||||
actions: <Widget>[
|
||||
TextButton(
|
||||
child: const Text('わかった'),
|
||||
onPressed: () {
|
||||
//Navigator.of(context).pop();
|
||||
Get.toNamed(AppPages.TRAVEL);
|
||||
},
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
// TODO: implement initState
|
||||
void initState(){
|
||||
super.initState();
|
||||
|
||||
//permissionServiceCall();
|
||||
_checkPermissions();
|
||||
}
|
||||
|
||||
Future<PermissionStatus> checkLocationPermission() async {
|
||||
return await Permission.location.status;
|
||||
}
|
||||
void _checkPermissions() async {
|
||||
// You can ask for multiple permissions at once.
|
||||
Map<Permission, PermissionStatus> statuses = await [
|
||||
Permission.location,
|
||||
Permission.camera,
|
||||
].request();
|
||||
|
||||
permissionServiceCall() async {
|
||||
await permissionServices().then(
|
||||
(value) {
|
||||
if (value != null) {
|
||||
if (value[Permission.location]!.isGranted ) {
|
||||
/* ========= New Screen Added ============= */
|
||||
bool isCameraGranted = statuses[Permission.camera]!.isGranted;
|
||||
bool isLocationGranted = statuses[Permission.location]!.isGranted;
|
||||
|
||||
Get.toNamed(AppPages.TRAVEL);
|
||||
if (!isCameraGranted || !isLocationGranted) {
|
||||
bool isCameraPermanentlyDenied = statuses[Permission.camera]!.isPermanentlyDenied;
|
||||
bool isLocationPermanentlyDenied = statuses[Permission.location]!.isPermanentlyDenied;
|
||||
|
||||
// Navigator.pushReplacement(
|
||||
// context,
|
||||
// MaterialPageRoute(builder: (context) => SplashScreen()),
|
||||
// );
|
||||
}
|
||||
else{
|
||||
_showMyDialog();
|
||||
}
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/*Permission services*/
|
||||
Future<Map<Permission, PermissionStatus>> permissionServices() async {
|
||||
// You can request multiple permissions at once.
|
||||
Map<Permission, PermissionStatus> statuses = await [
|
||||
Permission.location,
|
||||
|
||||
//add more permission to request here.
|
||||
].request();
|
||||
|
||||
if (statuses[Permission.location]!.isPermanentlyDenied) {
|
||||
await openAppSettings().then(
|
||||
(value) async {
|
||||
if (value) {
|
||||
if (await Permission.location.status.isPermanentlyDenied == true &&
|
||||
await Permission.location.status.isGranted == false) {
|
||||
// openAppSettings();
|
||||
permissionServiceCall(); /* opens app settings until permission is granted */
|
||||
}
|
||||
}
|
||||
if (isCameraPermanentlyDenied || isLocationPermanentlyDenied) {
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return AlertDialog(
|
||||
title: const Text('Permissions not granted'),
|
||||
content: const Text(
|
||||
'This app needs camera and location permissions to function. Please open settings and grant permissions.'),
|
||||
actions: <Widget>[
|
||||
ElevatedButton(
|
||||
child: const Text('Open settings'),
|
||||
onPressed: () {
|
||||
openAppSettings();
|
||||
},
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
);
|
||||
} else {
|
||||
if (statuses[Permission.location]!.isDenied) {
|
||||
permissionServiceCall();
|
||||
}
|
||||
// ask permissions again
|
||||
_checkPermissions();
|
||||
}
|
||||
|
||||
/*{Permission.camera: PermissionStatus.granted, Permission.storage: PermissionStatus.granted}*/
|
||||
return statuses;
|
||||
} else {
|
||||
Get.toNamed(AppPages.INITIAL);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var status = Permission.location.status.then((value){
|
||||
if(value.isGranted == false){
|
||||
Future.delayed(Duration.zero, () => showAlert(context));
|
||||
}
|
||||
else {
|
||||
Get.toNamed(AppPages.TRAVEL);
|
||||
}
|
||||
});
|
||||
return Scaffold(
|
||||
body: Container(
|
||||
child: Text(""),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void showAlert(BuildContext context) {
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (_) => AlertDialog(
|
||||
title: const Text('ロケーション許可'),
|
||||
content: SingleChildScrollView(
|
||||
child: ListBody(
|
||||
children: const <Widget>[
|
||||
Text( 'このアプリでは、位置情報の収集を行います。'),
|
||||
Text('岐阜ナビアプリではチェックポイントの自動チェックインの機能を可能にするために、現在地のデータが収集されます。アプリを閉じている時や、使用していないときにも収集されます。位置情報は、個人を特定できない統計的な情報として、ユーザーの個人情報とは一切結びつかない形で送信されます。お知らせの配信、位置情報の利用を許可しない場合は、この後表示されるダイアログで「許可しない」を選択してください。'),
|
||||
],
|
||||
),
|
||||
),
|
||||
actions: <Widget>[
|
||||
TextButton(
|
||||
child: const Text('わかった'),
|
||||
onPressed: () {
|
||||
permissionServiceCall();
|
||||
},
|
||||
),
|
||||
],
|
||||
)
|
||||
return const Scaffold(
|
||||
body: Center(
|
||||
child: Text('Checking permissions...'),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// import 'package:flutter/material.dart';
|
||||
// import 'package:get/get.dart';
|
||||
// import 'package:permission_handler/permission_handler.dart';
|
||||
// import 'package:rogapp/routes/app_pages.dart';
|
||||
|
||||
// class PermissionHandlerScreen extends StatefulWidget {
|
||||
// PermissionHandlerScreen({Key? key}) : super(key: key);
|
||||
|
||||
// @override
|
||||
// State<PermissionHandlerScreen> createState() => _PermissionHandlerScreenState();
|
||||
// }
|
||||
|
||||
// class _PermissionHandlerScreenState extends State<PermissionHandlerScreen> {
|
||||
|
||||
|
||||
// Future<void> _showMyDialog() async {
|
||||
// return showDialog<void>(
|
||||
// context: context,
|
||||
// barrierDismissible: false, // user must tap button!
|
||||
// builder: (BuildContext context) {
|
||||
// return AlertDialog(
|
||||
// title: const Text('ロケーション許可'),
|
||||
// content: SingleChildScrollView(
|
||||
// child: ListBody(
|
||||
// children: const <Widget>[
|
||||
// Text( 'このアプリでは、位置情報の収集を行います。'),
|
||||
// Text( 'このアプリでは、開始時点で位置情報を収集します。'),
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
// actions: <Widget>[
|
||||
// TextButton(
|
||||
// child: const Text('わかった'),
|
||||
// onPressed: () {
|
||||
// //Navigator.of(context).pop();
|
||||
// Get.toNamed(AppPages.TRAVEL);
|
||||
// },
|
||||
// ),
|
||||
// ],
|
||||
// );
|
||||
// },
|
||||
// );
|
||||
// }
|
||||
|
||||
// @override
|
||||
// void initState() {
|
||||
// // TODO: implement initState
|
||||
// super.initState();
|
||||
|
||||
// //permissionServiceCall();
|
||||
// }
|
||||
|
||||
// Future<PermissionStatus> checkLocationPermission() async {
|
||||
// return await Permission.location.status;
|
||||
// }
|
||||
|
||||
// permissionServiceCall() async {
|
||||
// await permissionServices().then(
|
||||
// (value) {
|
||||
// if (value != null) {
|
||||
// if (value[Permission.location]!.isGranted ) {
|
||||
// /* ========= New Screen Added ============= */
|
||||
|
||||
// Get.toNamed(AppPages.TRAVEL);
|
||||
|
||||
// // Navigator.pushReplacement(
|
||||
// // context,
|
||||
// // MaterialPageRoute(builder: (context) => SplashScreen()),
|
||||
// // );
|
||||
// }
|
||||
// else{
|
||||
// _showMyDialog();
|
||||
// }
|
||||
// }
|
||||
// },
|
||||
// );
|
||||
// }
|
||||
|
||||
|
||||
// /*Permission services*/
|
||||
// Future<Map<Permission, PermissionStatus>> permissionServices() async {
|
||||
// // You can request multiple permissions at once.
|
||||
// Map<Permission, PermissionStatus> statuses = await [
|
||||
// Permission.location,
|
||||
|
||||
// //add more permission to request here.
|
||||
// ].request();
|
||||
|
||||
// if (statuses[Permission.location]!.isPermanentlyDenied) {
|
||||
// await openAppSettings().then(
|
||||
// (value) async {
|
||||
// if (value) {
|
||||
// if (await Permission.location.status.isPermanentlyDenied == true &&
|
||||
// await Permission.location.status.isGranted == false) {
|
||||
// // openAppSettings();
|
||||
// permissionServiceCall(); /* opens app settings until permission is granted */
|
||||
// }
|
||||
// }
|
||||
// },
|
||||
// );
|
||||
// } else {
|
||||
// if (statuses[Permission.location]!.isDenied) {
|
||||
// permissionServiceCall();
|
||||
// }
|
||||
// }
|
||||
|
||||
// /*{Permission.camera: PermissionStatus.granted, Permission.storage: PermissionStatus.granted}*/
|
||||
// return statuses;
|
||||
// }
|
||||
|
||||
|
||||
|
||||
// @override
|
||||
// Widget build(BuildContext context) {
|
||||
// var status = Permission.location.status.then((value){
|
||||
// if(value.isGranted == false){
|
||||
// Future.delayed(Duration.zero, () => showAlert(context));
|
||||
// }
|
||||
// else {
|
||||
// Get.toNamed(AppPages.TRAVEL);
|
||||
// }
|
||||
// });
|
||||
// return Scaffold(
|
||||
// body: Container(
|
||||
// child: Text(""),
|
||||
// ),
|
||||
// );
|
||||
// }
|
||||
|
||||
// void showAlert(BuildContext context) {
|
||||
// showDialog(
|
||||
// context: context,
|
||||
// builder: (_) => AlertDialog(
|
||||
// title: const Text('ロケーション許可'),
|
||||
// content: SingleChildScrollView(
|
||||
// child: ListBody(
|
||||
// children: const <Widget>[
|
||||
// Text( 'このアプリでは、位置情報の収集を行います。'),
|
||||
// Text('岐阜ナビアプリではチェックポイントの自動チェックインの機能を可能にするために、現在地のデータが収集されます。アプリを閉じている時や、使用していないときにも収集されます。位置情報は、個人を特定できない統計的な情報として、ユーザーの個人情報とは一切結びつかない形で送信されます。お知らせの配信、位置情報の利用を許可しない場合は、この後表示されるダイアログで「許可しない」を選択してください。'),
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
// actions: <Widget>[
|
||||
// TextButton(
|
||||
// child: const Text('わかった'),
|
||||
// onPressed: () {
|
||||
// permissionServiceCall();
|
||||
// },
|
||||
// ),
|
||||
// ],
|
||||
// )
|
||||
// );
|
||||
// }
|
||||
|
||||
|
||||
// }
|
||||
@ -20,6 +20,9 @@ import 'package:rogapp/pages/register/register_page.dart';
|
||||
import 'package:rogapp/pages/search/search_binding.dart';
|
||||
import 'package:rogapp/pages/search/search_page.dart';
|
||||
import 'package:rogapp/pages/subperf/subperf_page.dart';
|
||||
import 'package:rogapp/screens/auth/views/login/login_screen.dart';
|
||||
import 'package:rogapp/screens/auth/views/register/register_screen.dart';
|
||||
import 'package:rogapp/screens/home/home_screen.dart';
|
||||
import 'package:rogapp/spa/spa_binding.dart';
|
||||
import 'package:rogapp/spa/spa_page.dart';
|
||||
|
||||
@ -28,6 +31,10 @@ part 'app_routes.dart';
|
||||
|
||||
class AppPages {
|
||||
|
||||
static const S_HOME = Routes.S_HOME;
|
||||
static const S_LOGIN = Routes.S_LOGIN;
|
||||
static const S_REGISTER= Routes.S_REGISTER;
|
||||
|
||||
// ignore: constant_identifier_names
|
||||
static const INITIAL = Routes.INDEX;
|
||||
// ignore: constant_identifier_names
|
||||
@ -60,6 +67,20 @@ class AppPages {
|
||||
// page: () => MapPage(),
|
||||
// binding: MapBinding(),
|
||||
// )
|
||||
GetPage(
|
||||
name: Routes.S_HOME,
|
||||
page: () => HomeScreen(),
|
||||
//binding: IndexBinding(),
|
||||
),
|
||||
GetPage(
|
||||
name: Routes.S_LOGIN,
|
||||
page: () => LoginScreen(),
|
||||
//binding: IndexBinding(),
|
||||
),
|
||||
GetPage(
|
||||
name: Routes.S_REGISTER,
|
||||
page: () => RegisterScreen(),
|
||||
),
|
||||
GetPage(
|
||||
name: Routes.INDEX,
|
||||
page: () => IndexPage(),
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
part of 'app_pages.dart';
|
||||
|
||||
abstract class Routes {
|
||||
static const S_HOME = '/s_home';
|
||||
static const S_LOGIN = '/s_login';
|
||||
static const S_REGISTER = '/s_register';
|
||||
// Main Menu Route
|
||||
// static const HOME = '/';
|
||||
// static const MAP = '/map';
|
||||
|
||||
36
lib/screens/auth/common/uis/auth_text_field.dart
Normal file
36
lib/screens/auth/common/uis/auth_text_field.dart
Normal file
@ -0,0 +1,36 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:rogapp/theme/pallete.dart';
|
||||
|
||||
class AuthTextField extends StatelessWidget {
|
||||
final TextEditingController controller;
|
||||
final String hinttext;
|
||||
final bool isObsque;
|
||||
const AuthTextField({super.key, required this.controller, required this.hinttext, this.isObsque = false});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return TextFormField(
|
||||
controller: controller,
|
||||
decoration: InputDecoration(
|
||||
focusedBorder: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(5),
|
||||
borderSide: const BorderSide(
|
||||
color: Pallete.BLUE_COLOR,
|
||||
width: 2
|
||||
)
|
||||
),
|
||||
enabledBorder: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(5),
|
||||
borderSide: const BorderSide(
|
||||
color: Pallete.BROWN_COLOR,
|
||||
)
|
||||
),
|
||||
contentPadding: const EdgeInsets.all(22),
|
||||
hintText: hinttext,
|
||||
hintStyle: const TextStyle(
|
||||
fontSize: 18,
|
||||
)
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
30
lib/screens/auth/common/uis/rounded_small_button.dart
Normal file
30
lib/screens/auth/common/uis/rounded_small_button.dart
Normal file
@ -0,0 +1,30 @@
|
||||
|
||||
import 'package:rogapp/theme/theme.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class RoundedSmallButton extends StatelessWidget {
|
||||
final VoidCallback onTap;
|
||||
final String label;
|
||||
final Color backgroundColor;
|
||||
final Color textColor;
|
||||
|
||||
const RoundedSmallButton({
|
||||
super.key,
|
||||
required this.onTap,
|
||||
required this.label,
|
||||
this.backgroundColor = Pallete.WHITE_COLOR,
|
||||
this.textColor = Pallete.BACKGROUND_COLOR,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return InkWell(
|
||||
onTap: onTap,
|
||||
child: Chip(
|
||||
label: Text(label, style: TextStyle(color: textColor, fontSize: 16),),
|
||||
backgroundColor: backgroundColor,
|
||||
labelPadding:const EdgeInsets.symmetric(horizontal: 10, vertical: 3),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
0
lib/screens/auth/views/login/login_binding.dart
Normal file
0
lib/screens/auth/views/login/login_binding.dart
Normal file
5
lib/screens/auth/views/login/login_controller.dart
Normal file
5
lib/screens/auth/views/login/login_controller.dart
Normal file
@ -0,0 +1,5 @@
|
||||
import 'package:get/get.dart';
|
||||
|
||||
class LoginController extends GetxController{
|
||||
|
||||
}
|
||||
67
lib/screens/auth/views/login/login_screen.dart
Normal file
67
lib/screens/auth/views/login/login_screen.dart
Normal file
@ -0,0 +1,67 @@
|
||||
import 'package:flutter/gestures.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:rogapp/common/ui/widgets/uis.dart';
|
||||
import 'package:rogapp/routes/app_pages.dart';
|
||||
import 'package:rogapp/screens/auth/common/uis/auth_text_field.dart';
|
||||
import 'package:rogapp/screens/auth/common/uis/rounded_small_button.dart';
|
||||
import 'package:rogapp/theme/theme.dart';
|
||||
|
||||
class LoginScreen extends StatelessWidget {
|
||||
final emailController = TextEditingController();
|
||||
final passwordController = TextEditingController();
|
||||
LoginScreen({super.key});
|
||||
|
||||
void login(){
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: UIs.appBar(),
|
||||
body: Center(
|
||||
child: SingleChildScrollView(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Column(
|
||||
children: [
|
||||
Container(
|
||||
height: MediaQuery.of(context).size.height/6,
|
||||
decoration: const BoxDecoration(
|
||||
image:DecorationImage(image: AssetImage('assets/images/login_image.jpg'))
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 5,),
|
||||
AuthTextField(controller: emailController, hinttext: 'Email',),
|
||||
const SizedBox(height: 25,),
|
||||
AuthTextField(controller: passwordController, hinttext: 'Password',),
|
||||
const SizedBox(height: 40,),
|
||||
Align(
|
||||
alignment: Alignment.topRight,
|
||||
child: RoundedSmallButton(onTap: login, label: 'Done',),
|
||||
),
|
||||
const SizedBox(height: 40,),
|
||||
RichText(
|
||||
text: TextSpan(
|
||||
text: "Don't have an account?",
|
||||
style: const TextStyle(fontSize: 16, color: Pallete.BROWN_COLOR),
|
||||
children: [
|
||||
TextSpan(
|
||||
text: " Signup",
|
||||
style: const TextStyle(color: Pallete.BLUE_COLOR, fontSize: 16),
|
||||
recognizer: TapGestureRecognizer()..onTap = (){
|
||||
Get.toNamed(AppPages.S_REGISTER);
|
||||
},
|
||||
),
|
||||
]
|
||||
)
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
10
lib/screens/auth/views/register/register_screen.dart
Normal file
10
lib/screens/auth/views/register/register_screen.dart
Normal file
@ -0,0 +1,10 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class RegisterScreen extends StatelessWidget {
|
||||
const RegisterScreen({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container();
|
||||
}
|
||||
}
|
||||
0
lib/screens/home/home_binding.dart
Normal file
0
lib/screens/home/home_binding.dart
Normal file
0
lib/screens/home/home_controller.dart
Normal file
0
lib/screens/home/home_controller.dart
Normal file
10
lib/screens/home/home_screen.dart
Normal file
10
lib/screens/home/home_screen.dart
Normal file
@ -0,0 +1,10 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class HomeScreen extends StatelessWidget {
|
||||
const HomeScreen({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Placeholder();
|
||||
}
|
||||
}
|
||||
@ -11,8 +11,7 @@ class ActionService{
|
||||
String server_url = ConstValues.currentServer();
|
||||
String url = "${server_url}/api/makeaction/?user_id=${user_id}&location_id=${location_id}&wanttogo=${wanttogo}&like=${like}&checkin=${checkin}";
|
||||
//String url = "http://localhost:8100/api/makeaction/?user_id=${user_id}&location_id=${location_id}&wanttogo=${wanttogo}&like=${like}&checkin=${checkin}";
|
||||
print('++++++++${url}');
|
||||
print("url is ------ ${url}");
|
||||
print('@@@@@@+++ action_service MAKEACTION - GET, @@@@@@ ${url}');
|
||||
final http.Response response = await http.get(
|
||||
Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
@ -31,7 +30,7 @@ class ActionService{
|
||||
List<dynamic> cats = [];
|
||||
String server_url = ConstValues.currentServer();
|
||||
String url = '${server_url}/api/useraction/?user_id=${user_id}&location_id=${location_id}';
|
||||
print('++++++++${url}');
|
||||
print('@@@@@@+++ action_service USERACTION - GET, @@@@@@ ${url}');
|
||||
//String url = 'http://localhost:8100/api/useraction/?user_id=${user_id}&location_id=${location_id}';
|
||||
final response = await http.get(Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
|
||||
@ -10,7 +10,7 @@ class AuthService{
|
||||
Map<String, dynamic> changePassword = {};
|
||||
String server_url = ConstValues.currentServer();
|
||||
String url = '${server_url}/api/change-password/';
|
||||
print('++++++++${url}');
|
||||
print('@@@@@@+++ auth_service CHANGE PASSWORD - PUT with old_password : ${oldpassword} new_password : ${newpassword}, @@@@@@ ${url}');
|
||||
final http.Response response = await http.put(
|
||||
Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
@ -31,11 +31,11 @@ class AuthService{
|
||||
|
||||
|
||||
static Future<Map<String, dynamic>> login(String email, String password) async {
|
||||
print("------- in logged email ${email} pwd ${password} ###### --------");
|
||||
//print("------- in logged email ${email} pwd ${password} ###### --------");
|
||||
Map<String, dynamic> cats = {};
|
||||
String server_url = ConstValues.currentServer();
|
||||
String url = '${server_url}/api/login/';
|
||||
print('++++++++${url}');
|
||||
print('@@@@@@+++ auth_service LOGIN - POST with email : ${email} password : ${password}, @@@@@@ ${url}');
|
||||
//String url = 'http://localhost:8100/api/login/';
|
||||
final http.Response response = await http.post(
|
||||
Uri.parse(url),
|
||||
@ -59,7 +59,7 @@ class AuthService{
|
||||
Map<String, dynamic> cats = {};
|
||||
String server_url = ConstValues.currentServer();
|
||||
String url = '${server_url}/api/register/';
|
||||
print('++++++++${url}');
|
||||
print('@@@@@@+++ auth_service REGISTER - POST with email : ${email} password : ${password}, @@@@@@ ${url}');
|
||||
final http.Response response = await http.post(
|
||||
Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
@ -81,7 +81,7 @@ class AuthService{
|
||||
Map<String, dynamic> cats = {};
|
||||
String server_url = ConstValues.currentServer();
|
||||
String url = '${server_url}/api/delete-account/';
|
||||
print('++++++++${url}');
|
||||
print('@@@@@@+++ auth_service DELETE USER - GET with Authorization : Token ${token}, @@@@@@ ${url}');
|
||||
final http.Response response = await http.get(
|
||||
Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
@ -101,8 +101,7 @@ class AuthService{
|
||||
List<dynamic> cats = [];
|
||||
String server_url = ConstValues.currentServer();
|
||||
String url = '${server_url}/api/userdetials?user_id=${userid}';
|
||||
print('++++++++${url}');
|
||||
print("---- UserDetails url is ${url}");
|
||||
print('@@@@@@+++ auth_service USER DETAILS - GET, @@@@@@ ${url}');
|
||||
final response = await http.get(Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
'Content-Type': 'application/json; charset=UTF-8',
|
||||
|
||||
@ -11,7 +11,7 @@ class CatService{
|
||||
List<dynamic> cats = [];
|
||||
String server_url = ConstValues.currentServer();
|
||||
String url = '${server_url}/api/cats/?ln1=${lon1}&la1=${lat1}&ln2=${lon2}&la2=${lat2}&ln3=${lon3}&la3=${lat3}&ln4=${lon4}&la4=${lat4}';
|
||||
print('++++++++${url}');
|
||||
print('@@@@@@+++ cat_service LOADCATS - GET, @@@@@@ ${url}');
|
||||
final response = await http.get(Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
'Content-Type': 'application/json; charset=UTF-8',
|
||||
@ -30,7 +30,7 @@ class CatService{
|
||||
List<dynamic> cats = [];
|
||||
String server_url = ConstValues.currentServer();
|
||||
String url = '${server_url}/api/catbycity/?${cityname}';
|
||||
print('++++++++${url}');
|
||||
print('@@@@@@+++ cat_service CHANGE PASSWORD - GET, @@@@@@ ${url}');
|
||||
final response = await http.get(Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
'Content-Type': 'application/json; charset=UTF-8',
|
||||
|
||||
@ -15,7 +15,7 @@ class DestinationService{
|
||||
List<dynamic> cats = [];
|
||||
String server_url = ConstValues.currentServer();
|
||||
String url = "${server_url}/api/destinations/?user_id=${user_id}";
|
||||
print('++++++++${url}');
|
||||
print('@@@@@@+++ destination_service GETDESTINATIONS - GET, @@@@@@ ${url}');
|
||||
final http.Response response = await http.get(
|
||||
Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
@ -33,7 +33,7 @@ class DestinationService{
|
||||
Map<String, dynamic> cats = {};
|
||||
String server_url = ConstValues.currentServer();
|
||||
String url = "${server_url}/api/delete_destination/?dest_id=${dest_id}";
|
||||
print('++++++++${url}');
|
||||
print('@@@@@@+++ destination_service DELETEDESTINATION - GET, @@@@@@ ${url}');
|
||||
final http.Response response = await http.get(
|
||||
Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
@ -52,7 +52,7 @@ class DestinationService{
|
||||
int cats = 0;
|
||||
String server_url = ConstValues.currentServer();
|
||||
String url = "${server_url}/api/updateorder/?user_action_id=${action_id}&order=${order}&dir=${dir}";
|
||||
print('++++++++${url}');
|
||||
print('@@@@@@+++ destination_service UPDATEORDER - GET, @@@@@@ ${url}');
|
||||
final http.Response response = await http.get(
|
||||
Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
|
||||
@ -57,7 +57,7 @@ class ExternalService {
|
||||
}
|
||||
else {
|
||||
String url = 'https://natnats.mobilous.com/start_from_rogapp';
|
||||
print('++++++++${url}');
|
||||
print('@@@@@@+++ external_service STARTROGAINING - POST with team_name : ${_team} event_code : ${_event_code}, @@@@@@ ${url}');
|
||||
final http.Response response = await http.post(
|
||||
Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
@ -82,7 +82,6 @@ class ExternalService {
|
||||
Future<Map<String, dynamic>> makeCheckpoint(int user_id, String token, String checkin_time, String teamname, int cp, String eventcode, String imageurl) async {
|
||||
Map<String, dynamic> _res = {};
|
||||
String url = 'https://natnats.mobilous.com/checkin_from_rogapp';
|
||||
print('++++++++${url}');
|
||||
final IndexController indexController = Get.find<IndexController>();
|
||||
|
||||
if(imageurl != null){
|
||||
@ -106,7 +105,7 @@ class ExternalService {
|
||||
String url1 = "${server_url}/api/checkinimage/";
|
||||
final im1Bytes = File(imageurl!).readAsBytesSync();
|
||||
String im1_64 = base64Encode(im1Bytes);
|
||||
|
||||
print('@@@@@@+++ external_service MAKECHECKPOINT - POST with user : ${user_id.toString()} team_name : ${teamname} event_code : ${eventcode} checkinimage : ${im1_64} checkintime : ${checkin_time} cp_number : ${cp.toString()}, @@@@@@ ${url1}');
|
||||
final http.Response response = await http.post(
|
||||
Uri.parse(url1),
|
||||
headers: <String, String>{
|
||||
@ -130,6 +129,8 @@ class ExternalService {
|
||||
|
||||
if(response.statusCode == 201){
|
||||
//print('---- toekn is ${token} -----');
|
||||
String imgUrl = _res["checkinimage"].toString().replaceAll('http://localhost:8100', 'http://rogaining.sumasen.net');
|
||||
print('@@@@@@+++ external_service MAKECHECKPOINT - POST with team_name : ${teamname} event_code : ${eventcode} checkinimage : ${imgUrl} cp_number : ${cp.toString()}, @@@@@@ ${url}');
|
||||
final http.Response response2 = await http.post(
|
||||
Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
@ -166,6 +167,7 @@ class ExternalService {
|
||||
db.insertRogaining(_rog);
|
||||
}
|
||||
else {
|
||||
print('@@@@@@+++ external_service MAKECHECKPOINT - POST with team_name : ${teamname} event_code : ${eventcode} cp_number : ${cp.toString()} image : "", @@@@@@ ${url}');
|
||||
final http.Response response3 = await http.post(
|
||||
Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
@ -214,7 +216,7 @@ class ExternalService {
|
||||
String url1 = "${server_url}/api/goalimage/";
|
||||
final im1Bytes = File(image!).readAsBytesSync();
|
||||
String im1_64 = base64Encode(im1Bytes);
|
||||
|
||||
print('@@@@@@+++ external_service MAKEGOAL - POST with user : ${user_id.toString()} team_name : ${teamname} event_code : ${eventcode} goaltime : ${goal_time} cp_number : -1 goalimage : ${im1_64}, @@@@@@ ${url1}');
|
||||
final http.Response response = await http.post(
|
||||
Uri.parse(url1),
|
||||
headers: <String, String>{
|
||||
@ -233,11 +235,10 @@ class ExternalService {
|
||||
);
|
||||
|
||||
String url = 'https://natnats.mobilous.com/goal_from_rogapp';
|
||||
print('++++++++${url}');
|
||||
if (response.statusCode == 201) {
|
||||
Map<String, dynamic> _res = json.decode(utf8.decode(response.bodyBytes));
|
||||
print('----_res : ${_res} ----');
|
||||
print('---- image url ${_res["goalimage"]} ----');
|
||||
String imgUrl = _res["goalimage"].toString().replaceAll('http://localhost:8100', 'http://rogaining.sumasen.net');
|
||||
print('@@@@@@+++ external_service MAKEGOAL - POST with team_name : ${teamname} event_code : ${eventcode} goal_time : ${goal_time} goalimage : ${imgUrl}, @@@@@@ ${url}');
|
||||
final http.Response response2 = await http.post(
|
||||
Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
@ -265,7 +266,7 @@ class ExternalService {
|
||||
static Future<Map<String, dynamic>> usersEventCode(String teamcode, String password) async {
|
||||
Map<String, dynamic> _res = {};
|
||||
String url = "https://natnats.mobilous.com/check_event_code?zekken_number=${teamcode}&password=${password}";
|
||||
print('++++++++${url}');
|
||||
print('@@@@@@+++ external_service USEREVENTCODE - GET, @@@@@@ ${url}');
|
||||
final http.Response response = await http.get(
|
||||
Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
|
||||
@ -61,7 +61,7 @@ class LocationService{
|
||||
url = '${server_url}/api/inperf/?perf=' + perfecture;
|
||||
}
|
||||
}
|
||||
print('++++++++${url}');
|
||||
print('@@@@@@+++ location_service LOADLOCATIONFOR - GET, @@@@@@ ${url}');
|
||||
final response = await http.get(Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
'Content-Type': 'application/json; charset=UTF-8',
|
||||
@ -80,7 +80,7 @@ class LocationService{
|
||||
List<dynamic> ext = [];
|
||||
String server_url = ConstValues.currentServer();
|
||||
String url = '${server_url}/api/locsext/';
|
||||
print('++++++++${url}');
|
||||
print('@@@@@@+++ location_service GETLOCATIONEXT - POST, with token : ${token} @@@@@@ ${url}');
|
||||
final response = await http.post(Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
'Content-Type': 'application/json; charset=UTF-8',
|
||||
@ -125,7 +125,7 @@ class LocationService{
|
||||
url = '${server_url}/api/insubperf?subperf=' + subperfecture;
|
||||
}
|
||||
}
|
||||
print('++++++++${url}');
|
||||
print('@@@@@@+++ location_service LOADLOCATIONSUBFOR - GET, @@@@@@ ${url}');
|
||||
final response = await http.get(Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
'Content-Type': 'application/json; charset=UTF-8',
|
||||
@ -169,7 +169,7 @@ class LocationService{
|
||||
url = '${server_url}/api/inbound?ln1=${lon1}&la1=${lat1}&ln2=${lon2}&la2=${lat2}&ln3=${lon3}&la3=${lat3}&ln4=${lon4}&la4=${lat4}';
|
||||
}
|
||||
}
|
||||
print('++++++++${url}');
|
||||
print('@@@@@@+++ location_service LOADLOCATIONSBOUNDS - GET, @@@@@@ ${url}');
|
||||
final response = await http.get(Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
'Content-Type': 'application/json; charset=UTF-8',
|
||||
@ -224,7 +224,7 @@ class LocationService{
|
||||
url = '${server_url}/api/customarea?name=${name}';
|
||||
}
|
||||
}
|
||||
print('++++++++${url}');
|
||||
print('@@@@@@+++ location_service LOADCUSTOMLOCATIONS - GET, @@@@@@ ${url}');
|
||||
final response = await http.get(Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
'Content-Type': 'application/json; charset=UTF-8',
|
||||
|
||||
@ -54,7 +54,7 @@ class MatrixService{
|
||||
|
||||
Map<String, dynamic> cats = {};
|
||||
String url = "https://maps.googleapis.com/maps/api/directions/json?destination=${destination}&mode=${_mode}&waypoints=${locs}&origin=${origin}&key=AIzaSyAUBI1ablMKuJwGj2-kSuEhvYxvB1A-mOE";
|
||||
print('++++++++${url}');
|
||||
print('@@@@@@+++ matrix_service GETDESTINATIONS - GET, @@@@@@ ${url}');
|
||||
final http.Response response = await http.get(
|
||||
Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
|
||||
@ -9,7 +9,7 @@ class PerfectureService{
|
||||
List<dynamic> perfs = [];
|
||||
String server_url = ConstValues.currentServer();
|
||||
String url = '${server_url}/api/perf_main/';
|
||||
print('++++++++${url}');
|
||||
print('@@@@@@+++ perfeture_service LOADPERFECTURES - GET, @@@@@@ ${url}');
|
||||
final response = await http.get(Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
'Content-Type': 'application/json; charset=UTF-8',
|
||||
@ -27,7 +27,7 @@ class PerfectureService{
|
||||
List<dynamic> perfs = [];
|
||||
String server_url = ConstValues.currentServer();
|
||||
String url = '${server_url}/api/subperfinmain/?area=' + area;
|
||||
print('++++++++${url}');
|
||||
print('@@@@@@+++ perfeture_service LOADSUBPERFECTURES - GET, @@@@@@ ${url}');
|
||||
final response = await http.get(Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
'Content-Type': 'application/json; charset=UTF-8',
|
||||
@ -46,7 +46,7 @@ class PerfectureService{
|
||||
List<dynamic> perfs = [];
|
||||
String server_url = ConstValues.currentServer();
|
||||
String url = '${server_url}/api/mainperfext/?perf=' + id;
|
||||
print('++++++++${url}');
|
||||
print('@@@@@@+++ perfeture_service GETMAINPERFEXT - GET, @@@@@@ ${url}');
|
||||
final response = await http.get(Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
'Content-Type': 'application/json; charset=UTF-8',
|
||||
@ -64,7 +64,7 @@ class PerfectureService{
|
||||
List<dynamic> perfs = [];
|
||||
String server_url = ConstValues.currentServer();
|
||||
String url = '${server_url}/api/allgifuareas/?perf=' + perf;
|
||||
print('++++++++${url}');
|
||||
print('@@@@@@+++ perfeture_service LOADGIFUAREAS - GET, @@@@@@ ${url}');
|
||||
final response = await http.get(Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
'Content-Type': 'application/json; charset=UTF-8',
|
||||
@ -82,7 +82,7 @@ class PerfectureService{
|
||||
List<dynamic> perfs = [];
|
||||
String server_url = ConstValues.currentServer();
|
||||
String url = '${server_url}/api/customareanames';
|
||||
print('++++++++${url}');
|
||||
print('@@@@@@+++ perfeture_service LOADCUSTOMAREAS - GET, @@@@@@ ${url}');
|
||||
final response = await http.get(Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
'Content-Type': 'application/json; charset=UTF-8',
|
||||
@ -101,7 +101,7 @@ class PerfectureService{
|
||||
List<dynamic> perfs = [];
|
||||
String server_url = ConstValues.currentServer();
|
||||
String url = '${server_url}/api/perfext/?sub_perf=' + id;
|
||||
print('++++++++${url}');
|
||||
print('@@@@@@+++ perfeture_service GETSUBEXT - GET, @@@@@@ ${url}');
|
||||
final response = await http.get(Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
'Content-Type': 'application/json; charset=UTF-8',
|
||||
|
||||
@ -12,8 +12,8 @@ class TrackingService {
|
||||
Map<String, dynamic> cats = {};
|
||||
String server_url = ConstValues.currentServer();
|
||||
String url = '${server_url}/api/track/';
|
||||
print('++++++++${url}');
|
||||
final geom = '{"type": "MULTIPOINT", "coordinates": [[${lon}, ${lat}]]}';
|
||||
print('@@@@@@+++ tracking_service ADDTRAACK - POST, with user_id : ${user_id} geom : ${geom} @@@@@@ ${url}');
|
||||
final http.Response response = await http.post(
|
||||
Uri.parse(url),
|
||||
headers: <String, String>{
|
||||
|
||||
17
lib/theme/app_theme.dart
Normal file
17
lib/theme/app_theme.dart
Normal file
@ -0,0 +1,17 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:rogapp/theme/pallete.dart';
|
||||
|
||||
class AppTheme {
|
||||
static ThemeData theme = ThemeData.light(useMaterial3: true).copyWith(
|
||||
scaffoldBackgroundColor: Pallete.WHITE_COLOR,
|
||||
primaryColor: Pallete.BLUE_COLOR,
|
||||
secondaryHeaderColor: Pallete.GREEN_COLOR,
|
||||
appBarTheme: const AppBarTheme(
|
||||
color: Pallete.BACKGROUND_COLOR,
|
||||
elevation: 0
|
||||
),
|
||||
floatingActionButtonTheme: const FloatingActionButtonThemeData(
|
||||
backgroundColor: Pallete.BLUE_COLOR
|
||||
),
|
||||
);
|
||||
}
|
||||
10
lib/theme/pallete.dart
Normal file
10
lib/theme/pallete.dart
Normal file
@ -0,0 +1,10 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class Pallete {
|
||||
static const Color BACKGROUND_COLOR = Color.fromRGBO(191, 33, 46, 1);
|
||||
static const Color SEARCHBAR_COLOR = Color.fromRGBO(191, 33, 120, 1);
|
||||
static const Color BLUE_COLOR = Color.fromRGBO(36, 163, 191, 1);
|
||||
static const Color GREEN_COLOR = Color.fromRGBO(31, 140, 58, 1);
|
||||
static const Color BROWN_COLOR = Color.fromRGBO(191, 135, 31, 1);
|
||||
static const Color WHITE_COLOR = Colors.white;
|
||||
}
|
||||
3
lib/theme/theme.dart
Normal file
3
lib/theme/theme.dart
Normal file
@ -0,0 +1,3 @@
|
||||
|
||||
export 'pallete.dart';
|
||||
export 'app_theme.dart';
|
||||
Reference in New Issue
Block a user