Explorar el Código

Challenge widget

Marcin Jaborski hace 3 años
padre
commit
ec3e7a65cb

+ 31 - 0
app/lib/challenges/challenge.dart

@@ -0,0 +1,31 @@
+import 'package:cloud_firestore/cloud_firestore.dart';
+import 'package:flutter/material.dart';
+import 'package:latlong2/latlong.dart';
+
+import '../navigation/navigation_page.dart';
+
+Widget buildChallenge(
+    DocumentSnapshot<Map<String, dynamic>> data, BuildContext context) {
+  final LatLng coordinates = LatLng(data.get('location').latitude, data.get('location').longitude);
+  return Center(
+    child: Column(
+      mainAxisAlignment: MainAxisAlignment.center,
+      children: [
+        const Text('Your challenge for this week:'),
+        Text(data.get('name')),
+        TextButton(
+            onPressed: () {
+              Navigator.push(
+                context,
+                MaterialPageRoute(
+                  builder: (context) => NavigationPage(
+                    destination: coordinates,
+                  ),
+                ),
+              );
+            },
+            child: const Text('Navigate me'))
+      ],
+    ),
+  );
+}

+ 35 - 0
app/lib/challenges/challenge_page.dart

@@ -0,0 +1,35 @@
+import 'package:cloud_firestore/cloud_firestore.dart';
+import 'package:flutter/material.dart';
+import 'package:physigo/challenges/challenges_utils.dart';
+import 'package:physigo/challenges/challenge.dart';
+
+class ChallengePage extends StatelessWidget {
+  const ChallengePage({Key? key}) : super(key: key);
+
+  @override
+  Widget build(BuildContext context) {
+    return Scaffold(
+      body: FutureBuilder<DocumentSnapshot<Map<String, dynamic>>>(
+        future: ChallengesUtils.getChallenge(),
+        builder: (context, snapshot) {
+          switch (snapshot.connectionState) {
+            case ConnectionState.waiting:
+              return const Center(
+                child: Text('Getting challenges...'),
+              );
+            case ConnectionState.done:
+              if (snapshot.hasError) {
+                return const Text('Error occurred');
+              }
+              if (snapshot.hasData) {
+                return buildChallenge(snapshot.data!, context);
+              }
+              return const Text('No data');
+            default:
+              return const Text('Dunno');
+          }
+        },
+      ),
+    );
+  }
+}

+ 4 - 4
app/lib/navigation/utils/challenges_utils.dart → app/lib/challenges/challenges_utils.dart

@@ -38,10 +38,10 @@ class ChallengesUtils {
       double userLat = value.get('address').latitude;
       double userLon = value.get('address').longitude;
 
-      double lowerLat = userLat - (lat * 5);
-      double lowerLon = userLon - (lon * 5);
-      double upperLat = userLat + (lat * 5);
-      double upperLon = userLon + (lon * 5);
+      double lowerLat = userLat - (lat * 15);
+      double lowerLon = userLon - (lon * 15);
+      double upperLat = userLat + (lat * 15);
+      double upperLon = userLon + (lon * 15);
 
       GeoPoint lesserGeoPoint = GeoPoint(lowerLat, lowerLon);
       GeoPoint greaterGeoPoint = GeoPoint(upperLat, upperLon);

+ 0 - 23
app/lib/navigation/challenge_page.dart

@@ -1,23 +0,0 @@
-import 'package:cloud_firestore/cloud_firestore.dart';
-import 'package:flutter/material.dart';
-import 'package:physigo/navigation/utils/challenges_utils.dart';
-
-class ChallengePage extends StatelessWidget {
-
-  const ChallengePage({Key? key}) : super(key: key);
-
-  @override
-  Widget build(BuildContext context) {
-    return Scaffold(
-      body: FutureBuilder<DocumentSnapshot<Map<String, dynamic>>>(
-        future: ChallengesUtils.getChallenge(),
-        builder: (context, snapshot) {
-          if(snapshot.hasData) {
-            print(snapshot.data?.get('name'));
-          }
-          return const Text('Challenges are here');
-        },
-      ),
-    );
-  }
-}