错误“无法在字段初始化程序中访问它"是什么意思? [英] What does the error "Can't access this in a field initializer mean"?
问题描述
我想在Flutter中创建一个类来显示警报框,该框可以将标题和内容作为输入以显示错误框.但是调试控制台说,当我使用它访问AlertDialog()中相同类的变量时,无法在字段初始化程序中访问它".
I want to create a class in flutter for displaying an Alert Box, which can take in title and Content as input to show error box. But debug console says that "can't access this in a field initializer" when I used this to access a variable of the same class in AlertDialog().
import 'package:flutter/material.dart';
void main() => runApp(MaterialApp(home: Alert("Say Hy","Hy"),));
class Alert extends StatelessWidget{
final String titlea;
final String contexta;
Alert(this.titlea,this.contexta);
AlertDialog dialog = AlertDialog(
title: Text(this.titlea),
content: Text(this.contexta),
);
Widget build(BuildContext context){
return Scaffold(
floatingActionButton: FloatingActionButton(
onPressed: (){
showDialog(context: context ,builder: (BuildContext context) => dialog);
},
),
);
}
}
错误:无法在字段初始值设定项中访问"this".标题:文字(this.titlea),^^^^错误:无法在字段初始值设定项中访问"this".内容:文本(this.contexta),^^^^
Error: Can't access 'this' in a field initializer. title: Text(this.titlea), ^^^^ Error: Can't access 'this' in a field initializer. content: Text(this.contexta), ^^^^
推荐答案
是的,您正在尝试访问一个类的字段,并试图将其用作 AlertDialog
类的字段初始值设定项,而不是可能的.您可以尝试将其与其他字段一起初始化,或将 AlertDialog
设置为 getter
.
Yes, you are trying to access a field of a class and trying to use it as field initializer for AlertDialog
class which is not possible. You can try to initialize it along with other fields or make AlertDialog
a getter
.
示例:用其他字段初始化
Example: Initialize with other fields
class Alert extends StatelessWidget {
final String titlea;
final String contexta;
final AlertDialog dialog;
Alert(this.titlea, this.contexta)
: dialog = AlertDialog(
title: Text(titlea),
content: Text(contexta),
);
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: FloatingActionButton(
onPressed: () {
showDialog(
context: context, builder: (BuildContext context) => dialog);
},
),
);
}
}
或者:将其作为吸气剂
class Alert extends StatelessWidget {
final String titlea;
final String contexta;
Alert(this.titlea, this.contexta);
AlertDialog get dialog => AlertDialog(
title: Text(titlea),
content: Text(contexta),
);
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: FloatingActionButton(
onPressed: () {
showDialog(
context: context, builder: (BuildContext context) => dialog);
},
),
);
}
}
希望有帮助!
这篇关于错误“无法在字段初始化程序中访问它"是什么意思?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!