mark
mark

Reputation: 1295

error saying Only static members can be accessed in initializers in DART

when I am trying to add the id present in the GenerateReportView Class to the map defined in the _GenerateReportViewState class I am getting the error,help me to fix this, in "id" key in the map i am adding the value present in the id in parent class.

class GenerateReportView extends StatefulWidget {
      final String reportType;
      final Map jsonString;
      final String reportName;
      final String dateType;

  final String id;
  final String language;

  GenerateReportView(
      {@required this.id,
      @required this.language,
      @required this.jsonString,
      @required this.reportType,
      @required this.reportName})
      : dateType = jsonString['dateType'];

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

class _GenerateReportViewState extends State<GenerateReportView>
    with SingleTickerProviderStateMixin {
  TabController _TabController;
  String currentReportChartType;
  List<TextEditingController> controllers = [];
  TextEditingController controller;
  Future report;
  Map<String, dynamic> reqFormat = {"lang": "EN","id":widget.id};//here I am getting error saying "Only static members can be accessed in initializers."

Upvotes: 0

Views: 52

Answers (2)

Guy Luz
Guy Luz

Reputation: 4009

Insert id in the contractor and pass it on

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

class GenerateReportView extends StatefulWidget {
  final String reportType;
  final Map jsonString;
  final String reportName;
  final String dateType;

  final String id;
  final String language;

  GenerateReportView(this.id, this.language, this.jsonString, this.reportType, this.reportName)
      : dateType = jsonString['dateType'];

  @override
  _GenerateReportViewState createState() => _GenerateReportViewState(id);
}

class _GenerateReportViewState extends State<GenerateReportView>
    with SingleTickerProviderStateMixin {
  TabController _TabController;
  String currentReportChartType;
  List<TextEditingController> controllers = [];
  TextEditingController controller;
  Future report;
  final String id;

  Map<String, dynamic> reqFormat;

  _GenerateReportViewState(this.id) {
    reqFormat = {"lang": "EN", "id": id};
  }

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return null;
  } //here I am getting error saying "Only static members can be accessed in initializers."

}

And you don't need the @required, just remove the Curly brackets

Upvotes: 0

chunhunghan
chunhunghan

Reputation: 54365

you can init in initState()
code snippet

class _GenerateReportViewState extends State<GenerateReportView> with SingleTickerProviderStateMixin {
  TabController _TabController;
  String currentReportChartType;
  List<TextEditingController> controllers = [];
  TextEditingController controller;
  Future report;
  Map<String, dynamic> reqFormat;

  @override
  void initState() {
    reqFormat = {"lang": "EN","id":widget.id};
    super.initState();
  }

Upvotes: 1

Related Questions