#flutter #android-studio
Вопрос:
У меня есть этот код, который получит список напоминаний в базе данных и покажет его на экране. Он отлично работает со списком напоминаний. Проблема в том, что когда список пуст (напоминания нет), я хочу, чтобы в нем отображался текст типа «Напоминания нет». Поэтому я попробовал использовать столбец, текстовый виджет, я завернул их в список, как показано ниже, но на экране ничего не отображается.
Если я удалю [], это ошибка, значение типа «Карта» не может быть возвращено из метода «buildReminderList», потому что он имеет возвращаемый тип «Список».
Кто-нибудь знает, как сделать так, чтобы текст типа «Напоминания нет» отображался в случае, когда список «Предстоящие» пуст.
List<Widget> buildReminderList(List<Reminder> reminders) {
debugPrint(reminders.length.toString());
if (reminders != null)
return reminders.map((Reminder reminder)
=> ListTile()).toList();
else
return [Card(
child: ListTile(
title: Text("There is no reminder", style: TextStyle(fontWeight: FontWeight.bold)),
)
)];
}
Ответ №1:
Результат
попробуй вот так
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class Test extends StatelessWidget {
List<Widget> buildReminderList() {
return [
Card(
child: ListTile(
title: Text("There is no reminder",
style: TextStyle(fontWeight: FontWeight.bold)),
),
),
];
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: ListView(
children: [
...buildReminderList().toList(),
],
),
),
);
}
}
Комментарии:
1. Я пробую это, все работает нормально, но на экране ничего не отображается, я даже указываю черный цвет, размер: 20, но на экране ничего не отображается. Это хорошо работает со списком, но когда список пуст, ничего не отображается таким образом.
2. попробуй
flutter clean
перестроиться. также заменитьif (reminders != null)
наif (reminders.length>0)
,3. flutter clean работает, большое вам спасибо!
Ответ №2:
Просто замените List<Widget>
на Widget
:-
Widget buildReminderList(List<Reminder> reminders) {
debugPrint(reminders.length.toString());
if (reminders != null)
return reminders.map((Reminder reminder)
=> ListTile()).toList();
else
return Text("There is no reminder", style: TextStyle(fontWeight: FontWeight.bold));
}
Комментарии:
1. Если я заменю его виджетом и удалю . Функция ToList() выдает следующую ошибку: «Значение типа ‘Iterable<ListTile>’ не может быть возвращено из метода ‘buildReminderList’, поскольку оно имеет возвращаемый тип «Виджет»».