Бесконечный цикл Futurebuilder при обнаружении результатов, ошибка снимка, если результаты не найденыPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Гость
 Бесконечный цикл Futurebuilder при обнаружении результатов, ошибка снимка, если результаты не найдены

Сообщение Гость »


Я неопытен и новичок в PHP, Flutter и Dart для своих проектов.

В настоящее время исправляются ошибки этого кода: операторы печати зацикливаются при выполнении кода.

А когда по данным поиска не найдено результатов, отображается ошибка: ожидалось значение типа «Список, но получено одно из типов String», но список результатов перестает работать.

Если я удалю setstate, результаты в списке не обновятся.

Посетитель класса { окончательный внутренний идентификатор; последняя строка? фотоссылка; последнее имя строки, адрес электронной почты, пароль, адрес, телефон; окончательная дата рождения DateTime; Посетитель({требуется this.id, требуется this.name, требуется this.email, требуется этот.пароль, требуется этот.адрес, требуется этот.телефон, требуется this.birthdate, this.photourl,}); фабрика Visitor.fromJson(Map json) { вернуть посетителя( идентификатор: int.parse(json['id']), имя: json['name'].toString(), электронная почта: json['email'].toString(), пароль: json['password'].toString(), адрес: json['адрес'].toString(), телефон: json['phone'].toString(), дата рождения: DateTime.parse(json['дата рождения']), photourl: json['photourl'].toString(), ); } } класс _VisitorSearchState расширяет State { поздние окончательные данные о персонале; окончательный TextEditingController _search = TextEditingController(); поздний финальный List _searchResults = []; позднее будущее? список посетителей; Future StaffSearchvisitor() async { Строковый запрос = _search.text; вар URL = Uri.parse( "http://localhost/qiu_visit/staff/visito ... ery=$query"); вар ответ = ожидайте http.post(url); окончательный список данные = jsonDecode(response.body); var _searchResults = data.map((item) => Visitor.fromJson(item)).toList(); print("JsonDecode для посетителя: $data"); setState(() { }); вернуть _searchResults; } @переопределить недействительный initState() { Staffdata = widget.staffdata!; список посетителей = StaffSearchvisitor(); супер.initState(); } @переопределить Сборка виджета (контекст BuildContext) { окончательный FocusNode _searchFocusNode = FocusNode(); вернуть эшафот( // ящик: SideDrawer(), тело: Центр( ребенок: Столбец( mainAxisAlignment: MainAxisAlignment.center, дети: [ Контейнер( дочерний элемент: TextField( focusNode: _searchFocusNode, контроллер: _search, украшение: InputDecoration( hintText: 'Искать имя посетителя', граница: OutlineInputBorder(), suffixIcon: IconButton( значок: Значок (Icons.search), onPressed: (){ список посетителей; }, ), ), ), ), Контейнер( дочерний элемент: FutureBuilder( будущее: StaffSearchvisitor(), строитель: (контекст, снимок) { если (снапшот.hasError) { print('Ошибка: ${snapshot.error}'); return Text('Ошибка: ${snapshot.error}'); } иначе, если (!snapshot.hasData) { return Text('Нет данных'); } // Используйте snapshot.data для отображения полученных данных. иначе, если (snapshot.hasData){ конечные элементы = snapshot.data; print('Извлеченные данные: ${snapshot.data}'); //print("itemCount: ${num}"); print("itemCount в ListView: ${items?.length}"); возвращаться ListView.builder( itemCount: элементы?.длина, ScrollDirection: Axis.vertical, термообертка: правда, itemBuilder: ((контекст, индекс) { вернуть контейнер( высота: 250, ширина: 200, поле: const EdgeInsets.all(10), ребенок: Столбец( mainAxisAlignment: MainAxisAlignment.center, дети: [ Столбец( дети: [ Столбец( дети: [ Ряд( mainAxisAlignment: MainAxisAlignment.start, дети: [ Text("${items?[index].id}.", Изображение.сеть( "http://localhost/qiu_visit/visitor/phot ... ].photourl}" , ширина: 100, высота: 100, errorBuilder:(контекст, ошибка, stackTrace) { return Text("Изображение недоступно"); } ), Столбец( дети: [ Text("${items?[index].phone}"), ],), ],), ], ), Ряд(дети: [ Text("${items?[index].name}"), ],), ], ), // ],), ); } ), ); } еще{ вернуть CircularProgressIndicator(); } }, ), ), ], ), ) ); } } Что вызывает указанные выше проблемы?

Как предотвратить бесконечный цикл операторов печати и как исправить исключение при поиске по нерелевантным данным, чтобы отображался только пустой список?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ, комментарий, отзыв

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как я могу создать это, используя цикл for в JavaScript?
    Гость » » в форуме Html
    0 Ответы
    1 Просмотры
    Последнее сообщение Гость
  • Почему std::ranges::binary_search и std::binary_search выдают разные результаты для одного и того же ввода?
    Гость » » в форуме C++
    0 Ответы
    1 Просмотры
    Последнее сообщение Гость
  • *1 ошибка подключения() (113: нет маршрута к хосту)
    Гость » » в форуме Php
    0 Ответы
    1 Просмотры
    Последнее сообщение Гость
  • Ошибка WEB3: транзакция была отменена EVM
    Гость » » в форуме Javascript
    0 Ответы
    1 Просмотры
    Последнее сообщение Гость
  • Почему возникает ошибка сегментации (движок v8)?
    Гость » » в форуме C++
    0 Ответы
    1 Просмотры
    Последнее сообщение Гость

Вернуться в «Php»