Бесконечный цикл Futurebuilder при обнаружении результатов, ошибка снимка, если результаты не найдены ⇐ 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(); } }, ), ), ], ), ) ); } } Что вызывает указанные выше проблемы?
Как предотвратить бесконечный цикл операторов печати и как исправить исключение при поиске по нерелевантным данным, чтобы отображался только пустой список?
Я неопытен и новичок в 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(); } }, ), ), ], ), ) ); } } Что вызывает указанные выше проблемы?
Как предотвратить бесконечный цикл операторов печати и как исправить исключение при поиске по нерелевантным данным, чтобы отображался только пустой список?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение