首页 > 解决方案 > “尝试将名称更正为现有 getter 的名称,或定义一个 getter 或字段命名”

问题描述

我的 Main.Dart 文件:

import 'package:flutter/material.dart';

void main() => runApp(MaterialApp(
  home: QuoteList() ,
));
class QuoteList extends StatefulWidget {
  List<String> quotes = [
    "Hello World"
    "Its never possible until its done"
  ];
  @override
  _QuoteListState createState() => _QuoteListState();
}

class _QuoteListState extends State<QuoteList> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(

      appBar: AppBar(
        title: Text("Awesome Quotes "),
        backgroundColor: Colors.redAccent[400],
        centerTitle: true,

      ),
      body: Column(
        children: Q.map()
      ),
    );
  }
}

我的错误:

Performing hot reload...
Syncing files to device AOSP on IA Emulator...
lib/main.dart:27:19: Error: The getter 'quotes' isn't defined for the class '_QuoteListState'.
 - '_QuoteListState' is from 'package:flutter_app3/main.dart' ('lib/main.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'quotes'.
        children: quotes.map()
                  ^^^^^^

请帮我解决这个问题,我关注了 Net Ninja Videos

我尝试并尝试修复它,但我无法修复它。另外,我是新来的。

标签: androidflutterdartzappdev

解决方案


您的代码存在多个问题。

  1. 列表引号,需要在class _QuoteListState extends State<QuoteList> {这是因为,您当前设置它的方式,它是类的属性。要访问它,您需要使用widget.quotes. 相反,您可以将该代码放在上面的行下。

  2. quotes.map单独是行不通的。相反,更简单的解决方案应该是以下行[...widget.quotes.map((eachQuote) => Text(eachQuote.toString()))]


让我解释一下。Column 的 children 参数接受 type 的列表Widget。因此,您需要将您命名的字符串列表的每个元素映射quotes到文本小部件,然后将该字符串转换为小部件。用于将...其解压缩到一个列表中,然后我们可以将其传递children:Column. 这是完成的代码:

import 'package:flutter/material.dart';

class QuoteList extends StatefulWidget {
  List<String> quotes = [
    "Hello World"
    "Its never possible until its done"
  ];
  @override
  _QuoteListState createState() => _QuoteListState();
}

class _QuoteListState extends State<QuoteList> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(

      appBar: AppBar(
        title: Text("Awesome Quotes "),
        backgroundColor: Colors.redAccent[400],
        centerTitle: true,

      ),
      body: Column(
        children: [...widget.quotes.map((eachQuote) => Text(eachQuote.toString()))],
      ),
    );
  }
}

推荐阅读