Léo Salé 3 anni fa
parent
commit
8f7f8d9378
1 ha cambiato i file con 13 aggiunte e 81 eliminazioni
  1. 13 81
      app/lib/walking/widgets/walking.dart

+ 13 - 81
app/lib/walking/widgets/walking.dart

@@ -16,26 +16,20 @@ class Walking extends StatefulWidget {
 class _WalkingState extends State<Walking> {
   final FlutterActivityRecognition activityRecognition = FlutterActivityRecognition.instance;
   final StreamController<Position> _streamController = StreamController.broadcast();
-  final StreamController<ActivityType> _simulatedActivityController = StreamController.broadcast();
   late Stream<dynamic> _activityPositionStream;
 
   num distance = 0;
   Position? lastPosition;
-  num points = 0;
+  int points = 0;
   num totalPoints = 0;
   num totalDistance = 0;
 
   @override
   void initState() {
-    // _simulatedActivityController.stream.listen(print);
-    // activityRecognition.activityStream.listen((event) {
-    //   print(event.type);
-    // });
     _activityPositionStream = CombineLatestStream.combine2(
       activityRecognition.activityStream,
-      // _simulatedActivityController.stream,
-      Geolocator.getPositionStream(locationSettings: LocationSettings(distanceFilter: 10)),
-      (dynamic a, Position b) => [a, b],
+      Geolocator.getPositionStream(locationSettings: LocationSettings(distanceFilter: 0)),
+      (Activity a, Position b) => [a, b],
     );
     _activityPositionStream.listen(_calculatePoints);
     super.initState();
@@ -47,13 +41,9 @@ class _WalkingState extends State<Walking> {
     super.dispose();
   }
 
-  void addScore() {
-    WalkingServices.addScore(Score(points: 45, distance: 500));
-  }
-
   void _updatePoints(num newPoints) {
     setState(() {
-      totalPoints += newPoints;
+      totalPoints = newPoints;
     });
   }
 
@@ -64,24 +54,24 @@ class _WalkingState extends State<Walking> {
   }
 
   void _calculatePoints(dynamic activityPosition) {
-    var activity = activityPosition[0];
+    var activity = activityPosition[0] as Activity;
     var position = activityPosition[1];
-    if (activity == ActivityType.WALKING || activity == ActivityType.RUNNING) {
+    if (activity.type == ActivityType.WALKING || activity.type == ActivityType.RUNNING) {
       if (lastPosition != null) {
         distance = Geolocator.distanceBetween(
             lastPosition!.latitude, lastPosition!.longitude, position.latitude, position.longitude);
         _updateDistance(distance);
       }
     }
-    if (distance > 0 && activity == ActivityType.WALKING) {
-      points += distance / 10;
+    if (distance > 0 && activity.type == ActivityType.WALKING) {
+      points += (distance / 10).floor();
       _updatePoints(points);
-    } else if (distance > 0 && activity == ActivityType.RUNNING) {
-      points += distance / 8;
+    } else if (distance > 0 && activity.type == ActivityType.RUNNING) {
+      points += (distance / 8).floor();
       _updatePoints(points);
     }
-    if (activity != ActivityType.WALKING && activity != ActivityType.RUNNING && points > 0) {
-      WalkingServices.addScore(Score(points: points.floor(), distance: 0));
+    if (activity.type != ActivityType.WALKING && activity.type != ActivityType.RUNNING && points > 0) {
+      WalkingServices.addScore(Score(points: points, distance: 0));
       points = 0;
     }
     lastPosition = position;
@@ -89,17 +79,13 @@ class _WalkingState extends State<Walking> {
 
   @override
   Widget build(BuildContext context) {
-    Geolocator.getPositionStream(locationSettings: LocationSettings(distanceFilter: 0)).listen((position) {
-      _streamController.add(position);
-      print(position);
-    });
     return Scaffold(
       body: Center(
         child: Column(
           mainAxisAlignment: MainAxisAlignment.center,
           children: [
             Text(
-              "Walked distance since start:\n$totalDistance m",
+              "Walked distance since start:\n${totalDistance.round()} m",
               textAlign: TextAlign.center,
               style: const TextStyle(fontSize: 24),
             ),
@@ -109,63 +95,9 @@ class _WalkingState extends State<Walking> {
               textAlign: TextAlign.center,
               style: const TextStyle(fontSize: 24),
             ),
-            // ElevatedButton(
-            //   onPressed: () => _simulatedActivityController.add(ActivityType.WALKING),
-            //   child: Text("WALKING"),
-            // ),
-            // ElevatedButton(
-            //   onPressed: () => _simulatedActivityController.add(ActivityType.RUNNING),
-            //   child: Text("RUNNING"),
-            // ),
-            // ElevatedButton(
-            //   onPressed: () => _simulatedActivityController.add(ActivityType.STILL),
-            //   child: Text("STILL"),
-            // ),
-            // StreamBuilder<dynamic>(
-            //   stream: _activityPositionStream,
-            //   builder: (context, snapshot) {
-            //     if (!snapshot.hasData) {
-            //       return CircularProgressIndicator();
-            //     }
-            //     var activity = snapshot.data![0];
-            //     var position = snapshot.data![1];
-            //     if (activity == ActivityType.WALKING || activity == ActivityType.RUNNING) {
-            //       if (lastPosition != null) {
-            //         distance = Geolocator.distanceBetween(
-            //             lastPosition!.latitude, lastPosition!.longitude, position.latitude, position.longitude);
-            //       }
-            //     }
-            //     if (distance > 0 && activity == ActivityType.WALKING) {
-            //       points += distance / 10;
-            //     } else if (distance > 0 && activity == ActivityType.RUNNING) {
-            //       points += distance / 8;
-            //     }
-            //     if (activity != ActivityType.WALKING && activity != ActivityType.RUNNING && points > 0) {
-            //       WalkingServices.addScore(Score(points: points.floor(), distance: 0));
-            //       points = 0;
-            //     }
-            //     lastPosition = position;
-            //     print(distance);
-            //     return Text("$distance");
-            //   },
-            // ),
           ],
         ),
       ),
     );
   }
 }
-
-/*
-Get distance only when walking or running
-
-if (walking || running) {
-  calculateScore()
-}
-*/
-
-// --W---R----W----S----W------
-
-// --P--P--P--P--P--P
-
-// --[W,P]--[W,P]--[R,P]--