This commit is contained in:
Mohamed Nouffer
2022-03-15 18:19:34 +05:30
parent 9090a76cf3
commit 92bb6b8dcd
13 changed files with 363 additions and 95 deletions

View File

@ -16,6 +16,8 @@ PODS:
- sqflite (0.0.2): - sqflite (0.0.2):
- Flutter - Flutter
- FMDB (>= 2.7.5) - FMDB (>= 2.7.5)
- url_launcher_ios (0.0.1):
- Flutter
DEPENDENCIES: DEPENDENCIES:
- Flutter (from `Flutter`) - Flutter (from `Flutter`)
@ -25,6 +27,7 @@ DEPENDENCIES:
- path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`) - path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`)
- permission_handler (from `.symlinks/plugins/permission_handler/ios`) - permission_handler (from `.symlinks/plugins/permission_handler/ios`)
- sqflite (from `.symlinks/plugins/sqflite/ios`) - sqflite (from `.symlinks/plugins/sqflite/ios`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
SPEC REPOS: SPEC REPOS:
trunk: trunk:
@ -45,6 +48,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/permission_handler/ios" :path: ".symlinks/plugins/permission_handler/ios"
sqflite: sqflite:
:path: ".symlinks/plugins/sqflite/ios" :path: ".symlinks/plugins/sqflite/ios"
url_launcher_ios:
:path: ".symlinks/plugins/url_launcher_ios/ios"
SPEC CHECKSUMS: SPEC CHECKSUMS:
Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
@ -55,6 +60,7 @@ SPEC CHECKSUMS:
path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02 path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02
permission_handler: ccb20a9fad0ee9b1314a52b70b76b473c5f8dab0 permission_handler: ccb20a9fad0ee9b1314a52b70b76b473c5f8dab0
sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904 sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904
url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de
PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c

View File

@ -7,7 +7,7 @@ import 'package:rogapp/utils/string_values.dart';
import 'package:rogapp/utils/util_controller.dart'; import 'package:rogapp/utils/util_controller.dart';
void main() { void main() {
WidgetsFlutterBinding.ensureInitialized(); //WidgetsFlutterBinding.ensureInitialized();
runApp(const MyApp()); runApp(const MyApp());
} }

View File

@ -8,23 +8,62 @@ class DrawerPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Drawer( return SafeArea(
// Add a ListView to the drawer. This ensures the user can scroll child: Drawer(
// through the options in the drawer if there isn't enough vertical // Add a ListView to the drawer. This ensures the user can scroll
// space to fit everything. // through the options in the drawer if there isn't enough vertical
child: ListView.builder( // space to fit everything.
itemCount: 10, child: Container(
itemBuilder: (context, i){ child: Column(
return Obx(() => children: [
CheckboxListTile( Container(
value: true, height: 100,
title: Text("Title"), color: Colors.amber,
onChanged: (val){ ),
} ListTile(
leading: Icon(Icons.login),
title: Text("login".tr),
onTap: (){},
),
ListTile(
leading: Icon(Icons.password),
title: Text("change_password".tr),
onTap: (){},
),
ListTile(
leading: Icon(Icons.person),
title: Text("profile".tr),
onTap: (){},
),
ListTile(
leading: Icon(Icons.route),
title: Text("recommended_route".tr),
onTap: (){},
),
ListTile(
leading: Icon(Icons.favorite_rounded),
title: Text("point_rank".tr),
onTap: (){},
),
ListTile(
leading: Icon(Icons.featured_video),
title: Text("game_rank".tr),
onTap: (){},
),
ListTile(
leading: Icon(Icons.router),
title: Text("my_route".tr),
onTap: (){},
),
ListTile(
leading: Icon(Icons.history_sharp),
title: Text("visit_history".tr),
onTap: (){},
),
],
), ),
); ),
}, ),
)
); );
} }
} }

View File

@ -50,5 +50,29 @@ class HomeController extends GetxController {
} }
} }
void makePrevious(GeoJsonFeature fs){
GeoJsonFeature<GeoJsonMultiPoint> pt = fs as GeoJsonFeature<GeoJsonMultiPoint>;
for(int i=0; i<= locations[0].collection.length - 1; i++){
GeoJsonMultiPoint p = locations[0].collection[i].geometry as GeoJsonMultiPoint;
if(p.geoSerie!.geoPoints[0].latitude == pt.geometry!.geoSerie!.geoPoints[0].latitude && p.geoSerie!.geoPoints[0].longitude == pt.geometry!.geoSerie!.geoPoints[0].longitude ){
if(currentFeature.length > 0){
currentFeature.clear();
}
if(i == 0 ){
currentFeature.add(locations[0].collection[locations[0].collection.length -1] as GeoJsonFeature);
}
else{
currentFeature.add(locations[0].collection[i - 1] as GeoJsonFeature);
}
}
}
}
} }

View File

@ -7,10 +7,8 @@ import 'package:get/get.dart';
import 'package:rogapp/pages/drawer/drawer_page.dart'; import 'package:rogapp/pages/drawer/drawer_page.dart';
import 'package:rogapp/pages/home/home_controller.dart'; import 'package:rogapp/pages/home/home_controller.dart';
import 'package:rogapp/routes/app_pages.dart'; import 'package:rogapp/routes/app_pages.dart';
import 'package:rogapp/services/location_line_service.dart';
import 'package:rogapp/services/location_polygon_service.dart';
import 'package:rogapp/services/location_service.dart';
import 'package:rogapp/widgets/bottom_sheet_widget.dart'; import 'package:rogapp/widgets/bottom_sheet_widget.dart';
import 'package:flutter_breadcrumb/flutter_breadcrumb.dart';
class HomePage extends GetView<HomeController> { class HomePage extends GetView<HomeController> {
@ -61,9 +59,7 @@ class HomePage extends GetView<HomeController> {
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[ children: <Widget>[
Expanded(child: IconButton(icon: Icon(Icons.camera_enhance), onPressed: (){},),), Expanded(child: IconButton(icon: Icon(Icons.camera_enhance), onPressed: (){},),),
Expanded(child: IconButton(icon: Icon(Icons.arrow_back_ios), onPressed: (){}),),
Expanded(child: new Text('')), Expanded(child: new Text('')),
Expanded(child: IconButton(icon: Icon(Icons.arrow_forward_ios), onPressed: (){}),),
Expanded(child: IconButton(icon: Icon(Icons.travel_explore), onPressed: (){}),), Expanded(child: IconButton(icon: Icon(Icons.travel_explore), onPressed: (){}),),
], ],
), ),
@ -71,9 +67,19 @@ class HomePage extends GetView<HomeController> {
floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked, floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
body:Column( body:Column(
children: [ children: [
Container( Padding(
height: 50.0, padding: const EdgeInsets.symmetric(horizontal: 8.0),
color: Colors.amber, child: Container(
alignment: Alignment.centerLeft,
height: 50.0,
child: BreadCrumb(
items: <BreadCrumbItem>[
BreadCrumbItem(content: Text('Item1', style: TextStyle(fontSize: 16.0, fontWeight: FontWeight.bold),)),
BreadCrumbItem(content: Text('Item2', style: TextStyle(fontSize: 16.0, fontWeight: FontWeight.bold),)),
],
divider: Icon(Icons.chevron_right),
),
),
), ),
Expanded( Expanded(
child: Obx(() => child: Obx(() =>

View File

@ -42,9 +42,7 @@ class MapPage extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[ children: <Widget>[
Expanded(child: IconButton(icon: Icon(Icons.camera_enhance), onPressed: (){},),), Expanded(child: IconButton(icon: Icon(Icons.camera_enhance), onPressed: (){},),),
Expanded(child: IconButton(icon: Icon(Icons.arrow_back_ios), onPressed: (){}),),
Expanded(child: new Text('')), Expanded(child: new Text('')),
Expanded(child: IconButton(icon: Icon(Icons.arrow_forward_ios), onPressed: (){}),),
Expanded(child: IconButton(icon: Icon(Icons.travel_explore), onPressed: (){}),), Expanded(child: IconButton(icon: Icon(Icons.travel_explore), onPressed: (){}),),
], ],
), ),

View File

@ -18,19 +18,7 @@ class LocationService{
if (response.statusCode == 200) { if (response.statusCode == 200) {
// geo.processedFeatures.listen((fst) {
// fs = fst;
// });
return featuresFromGeoJson(utf8.decode(response.bodyBytes)); return featuresFromGeoJson(utf8.decode(response.bodyBytes));
// await geo.parse(response.body, verbose:true);
// return fs;
// } else {
// throw Exception('Failed to create album.');
// }
} }
} }

View File

@ -5,10 +5,46 @@ class StringValues extends Translations{
// TODO: implement keys // TODO: implement keys
Map<String, Map<String, String>> get keys => { Map<String, Map<String, String>> get keys => {
'en_US': { 'en_US': {
'app_title': '- Rogaining -' 'app_title': '- Rogaining -',
'address':'address',
'email':'Email',
'web':'Web',
'wikipedia':'Wikipedia',
'video':'video',
'description':'Description',
'telephone':'Tel',
'how_nice': 'How nice',
'want_to_go': "Want to Go",
'schedule_point': "Schedule point",
'login': 'Login',
'change_password': 'Change Password',
'profile': 'Profile',
'recommended_route': 'Recommended Route',
'point_rank': 'Point Rank',
'game_rank': 'Game Rank',
'my_route': 'My Route',
'visit_history': 'Visit History'
}, },
'ja_JP': { 'ja_JP': {
'app_title': '旅行工程表' 'app_title': '旅行工程表',
'address':'住所',
'email':'Eメール',
'web':'Eメール',
'wikipedia':'ウィキペディア',
'video':'ビデオ',
'description':'説明',
'telephone':'電話',
'how_nice':'いいね',
'want_to_go': '行きたい',
'schedule_point': '予定地点',
'login': 'ログインする',
'change_password': 'パスワード変更',
'profile': 'プロフィール',
'recommended_route': '推奨ルート',
'point_rank': '地点ランキング',
'game_rank': 'ゲームランキング',
'my_route': 'マイルート',
'visit_history': '訪問履歴'
}, },
}; };
} }

View File

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:geojson/geojson.dart'; import 'package:geojson/geojson.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:rogapp/pages/home/home_controller.dart'; import 'package:rogapp/pages/home/home_controller.dart';
import 'package:url_launcher/url_launcher.dart';
class BottomSheetWidget extends StatelessWidget { class BottomSheetWidget extends StatelessWidget {
//const BottomSheetWidget({ Key? key }, GeoJsonFeature? pt) : super(key: key); //const BottomSheetWidget({ Key? key }, GeoJsonFeature? pt) : super(key: key);
@ -17,63 +18,163 @@ class BottomSheetWidget extends StatelessWidget {
} }
} }
void _launchURL(url) async {
if (!await launch(url)) throw 'Could not launch $url';
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SingleChildScrollView( return SingleChildScrollView(
child: Padding( child: Column(
padding: EdgeInsets.only( children: [
bottom: MediaQuery.of(context).viewInsets.bottom, SizedBox(height: 8.0,),
), Row(
child: Container( mainAxisAlignment: MainAxisAlignment.spaceBetween,
alignment: Alignment.topLeft, children: [
decoration: BoxDecoration( MaterialButton(
borderRadius: BorderRadius.circular(20.0), onPressed: () {
), homeController.makePrevious(homeController.currentFeature[0]);
child: Padding( },
padding: const EdgeInsets.all(8.0), color: Colors.blue,
child: Column( textColor: Colors.white,
children: [ child: Icon(
Row( Icons.arrow_back_ios,
mainAxisAlignment: MainAxisAlignment.center, size: 10,
children: [ ),
Expanded( padding: EdgeInsets.all(16),
child: Container( shape: CircleBorder(),
height: 35.0,
alignment: Alignment.center,
color: Colors.black12,
child: Obx(() =>
Text(homeController.currentFeature[0].properties!["location_name"], style: TextStyle(
fontSize: 18.0,
fontWeight: FontWeight.bold,
),
)
),
),
),
IconButton(
onPressed:(){
print("next");
homeController.makeNext(homeController.currentFeature[0]);
},
icon: Icon(Icons.delete_outlined)
)
],
),
Row(
children: [
Expanded(
child: Padding(
padding: EdgeInsets.all(8.0),
child: Obx(() => getImage(homeController.currentFeature[0])),
),
),
SizedBox(width: 66.0,)
],
),
],
), ),
) Expanded(
), child: Container(
alignment: Alignment.center,
child: Obx(() =>
Text(homeController.currentFeature[0].properties!["location_name"], style: TextStyle(
fontSize: 15.0,
fontWeight: FontWeight.bold,
),
)
),
),
),
MaterialButton(
onPressed: () {
homeController.makeNext(homeController.currentFeature[0]);
},
color: Colors.blue,
textColor: Colors.white,
child: Icon(
Icons.arrow_forward_ios,
size: 10,
),
padding: EdgeInsets.all(16),
shape: CircleBorder(),
),
],
),
Row(
children: [
Expanded(
child: SizedBox(
height: 360.0,
child: Obx(() => getImage(homeController.currentFeature[0])),
)
),
],
),
Row(
children: [
Expanded(
child: Column(
children: [
homeController.currentFeature[0].properties!["address"] != null ?
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text("address".tr, style: TextStyle(fontWeight: FontWeight.bold),),
SizedBox(width: 12.0,),
Obx(() => Text(homeController.currentFeature[0].properties!["address"],
style: TextStyle(color: Colors.blue,),
))
],
): Container(width: 0.0, height: 0,),
homeController.currentFeature[0].properties!["phone"] != null ?
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text("telephone".tr, style: TextStyle(fontWeight: FontWeight.bold),),
SizedBox(width: 12.0,),
Obx(() => Text(homeController.currentFeature[0].properties!["phone"],
style: TextStyle(color: Colors.blue,),
))
],
): Container(width: 0, height: 0,),
homeController.currentFeature[0].properties!["email"] != null ?
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text("email".tr, style: TextStyle(fontWeight: FontWeight.bold),),
SizedBox(width: 12.0,),
Obx(() => Text(homeController.currentFeature[0].properties!["email"],
style: TextStyle(color: Colors.blue,),
))
],
): Container(width: 0, height: 0,),
homeController.currentFeature[0].properties!["webcontents"] != null ?
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text("web".tr, style: TextStyle(fontWeight: FontWeight.bold)),
SizedBox(width: 12.0,),
Obx(() => InkWell(
onTap: (){
_launchURL(homeController.currentFeature[0].properties!["webcontents"]);
},
child: Text(homeController.currentFeature[0].properties!["webcontents"],
style: TextStyle(color: Colors.blue,),
),
))
],
): Container(width: 0.0, height: 0.0,),
homeController.currentFeature[0].properties!["videos"] != null ?
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text("video".tr, style: TextStyle(fontWeight: FontWeight.bold)),
SizedBox(width: 12.0,),
Obx(() => Text(homeController.currentFeature[0].properties!["videos"],
style: TextStyle(color: Colors.blue,),
))
],
): Container(width: 0.0, height: 0.0,),
],
),
),
],
),
SizedBox(height: 20.0,),
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
ElevatedButton(
onPressed: (){},
child: Text("schedule_point".tr)
),
ElevatedButton(
onPressed: (){},
child: Text("schedule_point".tr)
),
ElevatedButton(
onPressed: (){},
child: Text("schedule_point".tr)
)
],
),
Row(
children: [
SizedBox(height: 60.0,),
],
)
],
), ),
); );
} }

View File

@ -104,6 +104,13 @@ packages:
description: flutter description: flutter
source: sdk source: sdk
version: "0.0.0" version: "0.0.0"
flutter_breadcrumb:
dependency: "direct main"
description:
name: flutter_breadcrumb
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
flutter_compass: flutter_compass:
dependency: transitive dependency: transitive
description: description:
@ -595,6 +602,62 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.3.1" version: "0.3.1"
url_launcher:
dependency: "direct main"
description:
name: url_launcher
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.20"
url_launcher_android:
dependency: transitive
description:
name: url_launcher_android
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.15"
url_launcher_ios:
dependency: transitive
description:
name: url_launcher_ios
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.15"
url_launcher_linux:
dependency: transitive
description:
name: url_launcher_linux
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0"
url_launcher_macos:
dependency: transitive
description:
name: url_launcher_macos
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0"
url_launcher_platform_interface:
dependency: transitive
description:
name: url_launcher_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.5"
url_launcher_web:
dependency: transitive
description:
name: url_launcher_web
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.9"
url_launcher_windows:
dependency: transitive
description:
name: url_launcher_windows
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0"
vector_math: vector_math:
dependency: "direct main" dependency: "direct main"
description: description:
@ -625,4 +688,4 @@ packages:
version: "0.2.0+1" version: "0.2.0+1"
sdks: sdks:
dart: ">=2.16.0 <3.0.0" dart: ">=2.16.0 <3.0.0"
flutter: ">=2.10.0-0" flutter: ">=2.10.0"

View File

@ -56,7 +56,10 @@ dependencies:
material_design_icons_flutter: ^5.0.6595 material_design_icons_flutter: ^5.0.6595
google_fonts: any google_fonts: any
image_picker: ^0.8.4+4 image_picker: ^0.8.4+4
#geojson_vi: ^2.0.7
geojson: ^1.0.0 geojson: ^1.0.0
url_launcher: ^6.0.20
flutter_breadcrumb: ^1.0.1
dev_dependencies: dev_dependencies:

View File

@ -7,8 +7,11 @@
#include "generated_plugin_registrant.h" #include "generated_plugin_registrant.h"
#include <geolocator_windows/geolocator_windows.h> #include <geolocator_windows/geolocator_windows.h>
#include <url_launcher_windows/url_launcher_windows.h>
void RegisterPlugins(flutter::PluginRegistry* registry) { void RegisterPlugins(flutter::PluginRegistry* registry) {
GeolocatorWindowsRegisterWithRegistrar( GeolocatorWindowsRegisterWithRegistrar(
registry->GetRegistrarForPlugin("GeolocatorWindows")); registry->GetRegistrarForPlugin("GeolocatorWindows"));
UrlLauncherWindowsRegisterWithRegistrar(
registry->GetRegistrarForPlugin("UrlLauncherWindows"));
} }

View File

@ -4,6 +4,7 @@
list(APPEND FLUTTER_PLUGIN_LIST list(APPEND FLUTTER_PLUGIN_LIST
geolocator_windows geolocator_windows
url_launcher_windows
) )
set(PLUGIN_BUNDLED_LIBRARIES) set(PLUGIN_BUNDLED_LIBRARIES)