diff --git a/app/lib/widgets/bar_data.dart b/app/lib/widgets/bar_data.dart
index 5e3e981ed365b17cdf355c8dd32d88755751bd6d..43ab97101da0d9f4a26644205300bf83309e5d81 100644
--- a/app/lib/widgets/bar_data.dart
+++ b/app/lib/widgets/bar_data.dart
@@ -24,37 +24,43 @@ class _BarDataState extends State<BarData> {
   @override
   void initState() {
     super.initState();
+  }
 
-    // Allocate bar data dynamically based from the selected subdivision
-    for (int i = 0; i < 7; i++) {
-      var entry = selectedSubDiv?.iceStats[i];
-      if (entry != null) {
-        // NB test data for demo
-        Random random = Random();
-        double blackIce = 2.0 + random.nextDouble() * (4.0 - 2.0);
-        double slushIce = 1.0 + random.nextDouble() * (1.5 - 1.0);
-        double snowDepth = random.nextDouble() * 1.3;
-
-        barData[i] = [
-          //entry.blackIce,
-          //entry.slushIce,
-          //entry.snowDepth,
-          blackIce,  // NB test data for demo
-          slushIce,  // ...
-          snowDepth, // ..
-        ];
-
-        // NB test data for demo
-        totalHeight = blackIce + slushIce + snowDepth + 0.3; // NB demo data
-
-        // Find tallest layer
-        if (entry.totalIce > totalHeight) {
-          totalHeight = entry.totalIce;
+  /// Extracts the ice statistics from the currently selected subdivision
+  void setBarChartData() {
+    print("Updating bar chart data!!");
+    setState(() {
+      // Allocate bar data dynamically based from the selected subdivision
+      for (int i = 0; i < 7; i++) {
+        var entry = selectedSubDiv?.iceStats[i];
+        if (entry != null) {
+          // NB test data for demo
+          Random random = Random();
+          double blackIce = 2.0 + random.nextDouble() * (4.0 - 2.0);
+          double slushIce = 1.0 + random.nextDouble() * (1.5 - 1.0);
+          double snowDepth = random.nextDouble() * 1.3;
+
+          barData[i] = [
+            //entry.blackIce,
+            //entry.slushIce,
+            //entry.snowDepth,
+            blackIce,  // NB test data for demo
+            slushIce,  // ...
+            snowDepth, // ..
+          ];
+
+          // NB test data for demo
+          totalHeight = blackIce + slushIce + snowDepth + 0.3; // NB demo data
+
+          // Find tallest layer
+          if (entry.totalIce > totalHeight) {
+            totalHeight = entry.totalIce;
+          }
+        } else {
+          barData[i] = [0.0, 0.0, 0.0];
         }
-      } else {
-        barData[i] = [0.0, 0.0, 0.0];
       }
-    }
+    });
   }
 
   BarChartGroupData generateGroup(
@@ -125,6 +131,7 @@ class _BarDataState extends State<BarData> {
 
   @override
   Widget build(BuildContext context) {
+    setBarChartData();
       return Column(
           children: [
             SizedBox(
diff --git a/app/lib/widgets/main_layout.dart b/app/lib/widgets/main_layout.dart
index 17a1c82b010ef465b065f5047ce31b06ca599b75..2f2f3d028c65477ea1220cc5678bd0a57c82301f 100644
--- a/app/lib/widgets/main_layout.dart
+++ b/app/lib/widgets/main_layout.dart
@@ -5,6 +5,7 @@ import 'package:share_plus/share_plus.dart';
 import 'package:google_fonts/google_fonts.dart';
 import 'package:shared_preferences/shared_preferences.dart';
 
+import 'bar_data.dart';
 import 'osm_layer.dart';
 import 'stat_charts.dart';
 import 'info_layer.dart';
@@ -63,17 +64,17 @@ class _MapContainerWidgetState extends State<MapContainerWidget> {
   /// Tile selection handler
   void handleSelection(int index) {
     String indexString = index.toString();
-    setState(() {
       for (Measurement measurement in widget.measurements) {
         for (SubDiv subdivision in measurement.subDivs) {
           if (subdivision.sub_div_id == indexString) {
-            selectedSubDiv = subdivision;
-            selectedMeasurement = measurement;
+            setState(() {
+              selectedSubDiv = subdivision;
+              selectedMeasurement = measurement;
+            });
             break;
           }
         }
       }
-    });
   }
 
   @override
@@ -378,7 +379,7 @@ class _MapContainerWidgetState extends State<MapContainerWidget> {
                 const SizedBox(height: contPadding*2.5),
                 SizedBox(
                   width: screenWidth * boxWidth * 1.2,
-                  child: const StatCharts(),
+                  child: StatCharts(),
                 ),
                 const SizedBox(height: contPadding*4),
               ],
diff --git a/app/lib/widgets/stat_charts.dart b/app/lib/widgets/stat_charts.dart
index a34af6abcad11d16a63f03c837c677ff3af7bc44..f83418ad1a2ce4a509fb99910dce847d3c8b6402 100644
--- a/app/lib/widgets/stat_charts.dart
+++ b/app/lib/widgets/stat_charts.dart
@@ -79,7 +79,7 @@ class StatCharts extends StatelessWidget {
         ),
         SizedBox(
           width: MediaQuery.of(context).size.width-30,
-          child: const BarData(),
+          child: BarData(),
         ),
         /*
         const SizedBox(height: 60),