Список данных во Flutter не отображается

У меня есть список цитат (три цитаты), и я использую функцию карты для сопоставления списка цитат, чтобы создать небольшой виджет для каждой из них. Но кавычки не отображаются в приложении.

import 'package:flutter/material.dart';

void main() {
  runApp(MaterialApp(
    home: QuoteList(),
  ));
}

class QuoteList extends StatefulWidget {
  const QuoteList({ Key? key }) : super(key: key);

  @override
  State<QuoteList> createState() => _QuoteListState();
}

class _QuoteListState extends State<QuoteList> {

  List<String> quotes = [
    "There are three constants in life.. change, choice and principles.",
    "In three words I can sum up everything Ive learned about life: it goes on.",
    "Guests, like fish, begin to smell after three days."
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.grey[200],
      appBar: AppBar(
        title: Text('Awesome Quotes'),
        centerTitle: true,
        backgroundColor: Colors.redAccent,
      ),
      body: Column(
        children: quotes.map((e) => Text(e)).toList(),
      ),
    );
  }
}

попробуйте переместить инициализацию quotes в метод build.

Luka Cerrutti 22.03.2022 14:24

ваш код работает для меня

Pokaboom 22.03.2022 14:24

Пробовал на DartPad - у меня работает.

Roman Jaquez 22.03.2022 14:24

@LukaCerrutti это сработало при переходе к методу сборки. Спасибо. Но немного смущает, почему это работает для других.

Casty 22.03.2022 14:32

Возможно, они попробовали логику дротика только на пусковой площадке для дротиков или что-то в этом роде. Тот факт, где вы инициализируете свои переменные во флаттере, на самом деле matters. Также я бы лично попробовал, работает ли использование объявления final вне метода build (поскольку это может быть лучшим решением, если оно работает).

Luka Cerrutti 22.03.2022 14:57
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
45
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Идеально работает на DartPad.

Попробуйте запустить "трепетать чистым", а затем "трепетать запустить"

попробуйте это вместо столбца

ListView.builder(
        itemCount: 5,
        itemBuilder: (BuildContext context,int index){
      return Text(quotes[index]);
        }
        ),
    );
Ответ принят как подходящий

Переместите инициализацию переменной кавычек внутрь метода build.

class _QuoteListState extends State<QuoteList> {
  @override
  Widget build(BuildContext context) {
    var quotes = [
      "There are three constants in life.. change, choice and principles.",
      "In three words I can sum up everything Ive learned about life: it goes on.",
      "Guests, like fish, begin to smell after three days."
    ];

    return Scaffold(
      backgroundColor: Colors.grey[200],
      appBar: AppBar(
        title: Text('Awesome Quotes'),
        centerTitle: true,
        backgroundColor: Colors.redAccent,
      ),
      body: Column(
        children: quotes.map((e) => Text(e)).toList(),
      ),
    );
  }
}

Также вы можете использовать вывод типов и использовать var вместо уточнения List<String>.

Другие вопросы по теме