错误“无法在字段初始化程序中访问它"是什么意思? [英] What does the error "Can't access this in a field initializer mean"?

查看:42
本文介绍了错误“无法在字段初始化程序中访问它"是什么意思?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆