gpt4 book ai didi

flutter - 未为对象定义 Getter

转载 作者:IT王子 更新时间:2023-10-29 07:15:18 26 4
gpt4 key购买 nike

我正在尝试使用传递的类实例设置状态并访问成员值,但它给了我未在对象上定义 getter 的错误。但同样适用于 initState 方法。

这用于在用户关闭 ShowDialog 时传递值。我尝试设置 setter/getter 并将类(class)成员从私有(private)更改为公共(public)。

class MyReaction {
IconData _icon;
String _text;
MyReaction(this._icon, this._text);
IconData get iconD => this._icon;
String get textV => this._text;
}

class _MyHomePageState extends State<MyHomePage> {

MyReaction _myreaction = new MyReaction(Icons.thumb_up, 'Like');

IconData _myreactionIcon;
String _myreactionText;

@override
void initState() {
super.initState();
controller = new ScrollController();
_myreactionIcon = _myreaction.iconD; //It works here!!
_myreactionText = _myreaction.textV;
}

FlatButton.icon(
icon:Icon(this._myreactionIcon, size: 24.0),
onPressed: () {
showDemoDialog<MyReaction>(
context: context,
child: SimpleDialog(
title: const Text('Your Reaction'),
children: <Widget>[
DialogDemoItem(
icon: Icons.account_circle,
color: Colors.black87,
text: 'username@gmail.com',
onPressed: () {
MyReaction _reaction = new MyReaction(Icons.account_circle, 'Like');
Navigator.pop(context, _reaction);
},
),
]
)
);
},
);


void showDemoDialog<MyReaction>({ BuildContext context, Widget child }) {
showDialog<MyReaction>(
context: context,
builder: (BuildContext context) => child,
)
.then<void>((MyReaction value) { // The value passed to Navigator.pop() or null.
if (value != null) {
setState(() {
_myreactionIcon = value.iconD; //Does not work here
_myreactionText = value.textV;});
// _scaffoldKey.currentState.showSnackBar(SnackBar(
// content: Text('You selected: $value'),
));
}
});
}
}

我希望 showDialog 方法中的值可以分配给状态变量。但是 value.iconD 给出了 getter not defined 错误。我做错了什么

最佳答案

您已将通用类型参数添加到您的方法 showDemoDialog 中,它会隐藏(隐藏)您对类 MyReaction 的定义。

此泛型类型参数实际上并未在您的方法中使用,因此可以将其删除。

像这样定义你的方法:

void showDemoDialog({ BuildContext context, Widget child }) {
showDialog<MyReaction>(context: context, builder: (BuildContext context) => child)
.then((MyReaction value) { // The value passed to Navigator.pop() or null.
if (value != null) {
setState(() {
_myreactionIcon = value.iconD; // Does now work
_myreactionText = value.textV;
});
}
}
);

}

关于flutter - 未为对象定义 Getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57555825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com