-1

Hello i am beginner in flutter , i faced a strange error that i never faced before: Can't access 'this' in a field initializer to read 'assists'. Can't access 'this' in a field initializer to read 'goals'.

here what i have tried:

class Statss extends StatefulWidget {




  @override
  _StatssState createState() => _StatssState();
}

class _StatssState extends State<Statss> {

  List<AssistsJson> topassists = [];
  List<GoalsJson> topgoals = [];
  List<GoalsJson> teams = [];
  String assister;
  String assists;
  String goals;
  String scorer;


  Future<void>  getScorers() async {
    http.Response response = await http.get(
        'https://v3.football.api-sports.io/players/topscorers?league=39&season=2020',
        headers: {'x-rapidapi-key': ApiKey.key,
          'x-rapidapi-host':'v3.football.api-sports.io'});
    String body = response.body;
    var data = jsonDecode(body);
    List<dynamic> clubList = data['response'];

    setState(() {
      topgoals = clubList
          .map((dynamic item) => GoalsJson.fromJson(item))
          .toList();
      goals = topassists[0].statistics[0].goals.total.toString();
    });

  }

  Future<void>  getAssisters() async {
    http.Response response = await http.get(
        'https://v3.football.api-sports.io/players/topassists?league=39&season=2020',
        headers: {'x-rapidapi-key': ApiKey.key,
          'x-rapidapi-host':'v3.football.api-sports.io'});
    String body = response.body;
    var data = jsonDecode(body);
    List<dynamic> clubList = data['response'];

    setState(() {
      topassists = clubList
          .map((dynamic item) => AssistsJson.fromJson(item))
          .toList();
      assists = topassists[0].statistics[0].goals.assists.toString();

    });

  }

  @override
  void initState() {
    super.initState();
    getScorers();
    getAssisters();
  }






  List<String> images = [
    "Assets/tt.jpg",
    "Assets/qatarairways.jpg",
    "Assets/LOGO_Danao.jpg",
    "Assets/delice.jpg"
  ];

  List<String> menu = [
    "Assets/tt.jpg",
    "Assets/qatarairways.jpg",
    "Assets/LOGO_Danao.jpg",
    "Assets/delice.jpg"
  ];

  List<String> choices = [
    "Top Scorer: ",
    "Top Assister: ",
    "Asset: ",
    "Ass: "
  ];
  List<String> mchoices = [
    "Goals: ",
    "Assists: ",
    "Goals: ",
    "Ass: "
  ];

  List<String> data = [
    goals,
    assists,
    "Goals: ",
    "Ass: "
  ];
..........................................................................

I am trying to understand what happened and find a solution for this problem

Fares Ben Slama
  • 93
  • 4
  • 15

1 Answers1

0

Move your assigning logic to initistate

List<String> data = [ ];

@override
  void initState() {
    super.initState();
    getScorers();
    getAssisters();
 data = [
    goals,
    assists,
    "Goals: ",
    "Ass: "
   ];
  }
Huthaifa Muayyad
  • 11,321
  • 3
  • 17
  • 49