В инициализаторе доступны только статические члены. Dart2.0
Я использую банклист в виджете с отслеживанием состояния. список прохождения к pageState
с помощью List<Bank> bankLists = this.widget.bankLists;
Que 1. Почему я получаю ошибку в gradientcolor: gradientBankCard("FFB74093","FFB74093"))
что только статические члены могут быть доступны в инициализаторе?
Que 2. Как передать константные данные в 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))]
);
}
Банк Модель.дарт
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});
}
1 ответ
Код
gradientcolor: gradientBankCard('#e48634', '#e48634')),
выполняется до полной инициализации класса. Инициализаторы полей типа
List<Bank> bankLists = [...];
выполняется до того, как будут выполнены супер-конструкторы, и в этот момент явный или косвенный доступ к this.
не разрешено, потому что это позволило бы получить доступ к не полностью инициализированному состоянию.
Если вы измените
LinearGradient gradientBankCard(String startColor, String endColor){ ...
в
static LinearGradient gradientBankCard(String startColor, String endColor){
тогда нет доступа this.
и поэтому безопасно.