dart - 在初始化程序中只能访问静态成员。Dart2.0
问题描述
我在有状态小部件中使用银行列表。将列表传递给pageState
使用 List<Bank> bankLists = this.widget.bankLists;
问题 1.为什么gradientcolor: gradientBankCard("FFB74093","FFB74093"))
在初始化程序中只能访问静态成员时出现错误?
Que 2.如何将 const Data 传递给gradientBankCard
method 。例如,我想传递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))]
);
}
银行模型.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')),
在类完全初始化之前执行。字段的初始化器,例如
List<Bank> bankLists = [...];
在超级构造函数执行之前执行,此时不允许显式或隐式访问,this.
因为它会允许访问未完全初始化的状态。
如果你改变
LinearGradient gradientBankCard(String startColor, String endColor){ ...
到
static LinearGradient gradientBankCard(String startColor, String endColor){
那么就无法访问this.
,因此是安全的。
推荐阅读
- python - 如何点击搜索公司名称按钮,输入公司名称并使用 Selenium 和 Python 进行搜索?
- sql - 从列销售中每 7 行求和一次,而整数表示距离安装促销材料的 n 天(安装之前和之后)
- linux - Uevent 作为从内核到用户空间的简单通知
- java - 允许 Spring 在不同的 jars 中有多个 WebMvcConfigurer 实现
- matlab - 在 SNR 计算期间,下标索引必须是实数正整数或逻辑数
- css - 如何使用自定义样式在 Reactjs 中使用 html2canvas 截取 DOM
- c# - 是否应为同一实体创建多个数据合同
- pyspark - pyspark笛卡尔连接:重命名重复的列
- python - python 2和3的相同代码给出不同的结果
- sql-server - 我想在 sql 存储过程中根据以前的 id 生成新的 id