在初始化程序中只能访问静态成员。 Dart2.0

Only static members can be accessed in initializer. Dart2.0

我在有状态小部件中使用银行列表。使用 List<Bank> bankLists = this.widget.bankLists;

将列表传递给 pageState

问题 1. 为什么我在 gradientcolor: gradientBankCard("FFB74093","FFB74093")) 处收到错误,在初始化程序中只能访问静态成员?

问题 2. 如何将 const 数据传递给 gradientBankCard 方法。例如,我想将 Color.fromRGBO(220, 132, 58, 1.0) 传递给给错误的参数。 我

List<Bank> bankLists = [
 Bank(
    id: "1",
    name: "B1",
    loanAmount: "₹ 250000",
    emi: "₹11732",
    intrest_rate: "11.69 % ",
    processing_fee: "1.29 %",
    tenure: "2 years",
    gradientcolor: gradientBankCard('#e48634', '#e48634')), // //Error : Only static members can be accessed in initializers
 Bank(
    id: "2",
    name: "B2",
    loanAmount: "₹ 250000",
    emi: "₹11732",
    intrest_rate: "11.69 % ",
    processing_fee: "1.29 %",
    tenure: "2 years",
    gradientcolor: gradientBankCard('#e48634', '#e48634')) //Error : Only static members can be accessed in initializers
];

现在我正在列表屏幕中使用。

LinearGradient gradientBankCard(String startColor, String  endColor){

return LinearGradient(
    begin: Alignment.topLeft,
    end: Alignment.bottomRight,
    colors: [Color(hexToInt(startColor)),Color(hexToInt(endColor))]
);
}

银行Model.dart

import 'package:flutter/material.dart';



class Bank {
  final String id;
  final String name;
  final String loanAmount;
  final String emi;
  final String intrest_rate;
  final String processing_fee;
  final String tenure;
  LinearGradient gradientcolor;

  Bank({this.id, this.name, this.loanAmount, this.emi, this.intrest_rate,
      this.processing_fee, this.tenure,this.gradientcolor});

}

代码

gradientcolor: gradientBankCard('#e48634', '#e48634')),

在 class 完全初始化之前执行。

等字段的初始值设定项
List<Bank> bankLists = [...];

在执行超级构造函数之前执行,此时不允许显式或隐式访问 this.,因为它会允许访问未完全初始化的状态。

如果你改变

LinearGradient gradientBankCard(String startColor, String  endColor){ ...

static LinearGradient gradientBankCard(String startColor, String  endColor){

那么就无法访问this.,因此是安全的。