title: Error: The operator '[]' isn't defined for the class 'Future<dynamic>'
body: <p>I am getting the following error for my weather app. How can I fix it?</p>
  <p>Compiler message:
  <code>lib/loadingscreen.dart:38:41:</code> Error: The operator '[]' isn't defined for the class 'Future'.</p>
  <ul>
  <li>'Future' is from 'dart:async'.
  Try correcting the operator to an existing operator, or defining a '[]' operator.</li>
  </ul>
  <p>String weathericonlink = weatherdata['current']['condition']['icon'];</p>
  <p>main file:</p>
  <pre><code>import 'package:flutter/material.dart';
  
  import 'loadingscreen.dart';
  
  void main() =&gt; runApp(MyApp());
  
  class MyApp extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
      return MaterialApp(
        debugShowCheckedModeBanner: false,
        theme: ThemeData.dark(),
        home: LoadingScreen(),
      );
    }
  }
  </code></pre>
  <p>the loadingscreen class is :</p>
  <pre><code>import 'dart:async';
  import 'dart:convert';
  
  import 'package:flutter/material.dart';
  import 'package:http/http.dart' as http;
  
  class LoadingScreen extends StatefulWidget {
    @override
    _LoadingScreenState createState() =&gt; _LoadingScreenState();
  }
  
  class _LoadingScreenState extends State&lt;LoadingScreen&gt; {
    Future&lt;dynamic&gt; getData() async {
      String url;
      var weatherdata;
      url =
          'https://api.weatherapi.com/v1/current.json?key=${apikey}&amp;q=51.509865,-0.118092';
  
      http.Response response = await http.get(url);
  
      if (response.statusCode == 200) {
        String data = response.body;
        weatherdata = jsonDecode(data);
        print(weatherdata);
      } else {
        print(response.statusCode);
      }
  
      double temp = weatherdata['current']['temp_c'];
      print('Temperature: $temp');
  
      return weatherdata;
    }
  
    String getCurrentWeatherIcon() {
      var weatherdata = getData();
  
      String weathericonlink = weatherdata['current']['condition']['icon'];
      weathericonlink = weathericonlink.substring(35, weathericonlink.length);
      weathericonlink = 'assets/weathericons/$weathericonlink';
      print('Weather icon link : $weathericonlink');
  
      return weathericonlink;
    }
  
    @override
    void initState() {
      // TODO: implement initState
      super.initState();
      //getCurrentWeatherIcon();
    }
  
    @override
    Widget build(BuildContext context) {
      return Scaffold(
          body: SafeArea(
        child: Container(
          child: Padding(
            padding: const EdgeInsets.all(32.0),
            child: Column(
              children: &lt;Widget&gt;[
                Text('Hello'),
                Image(
                  image: AssetImage('${getCurrentWeatherIcon()}'),
                ),
                Expanded(
                  child: Container(
                    decoration: BoxDecoration(
                      image: DecorationImage(
                        image: AssetImage('assets/weathericons/day/113.png'),
                        fit: BoxFit.cover,
                      ),
                    ),
                  ),
                ),
              ],
            ),
          ),
        ),
      ));
    }
  }
  </code></pre>