我想创建一个用于显示警报框的类,该警报框可以将标题和内容作为输入以显示错误框。 但是调试控制台说,当我使用它访问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.titlea), ^^^^ 错误:无法在字段初始值设定项中访问“ this”。 内容:文本(this.contexta), ^^^^
答案 0 :(得分:1)
是的,您正在尝试访问类的字段,并试图将其用作AlertDialog
类的字段初始化程序。您可以尝试将其与其他字段一起初始化,或将AlertDialog
设为getter
。
示例:用其他字段初始化
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);
},
),
);
}
}
希望有帮助!
答案 1 :(得分:0)
请删除小部件文本上的this
。因为this
用于构造函数。
class Alert extends StatelessWidget{
final String titlea;
final String contexta;
Alert(this.titlea,this.contexta);
AlertDialog dialog = AlertDialog(
title: Text(titlea),
content: Text(contexta),
);
Widget build(BuildContext context){
return Scaffold(
floatingActionButton: FloatingActionButton(
onPressed: (){
showDialog(context: context ,builder: (BuildContext context) => dialog);
},
),
);
}
}