Anonymous
Почему у меня есть пустое место в ListView, когда я помещаю его в ящик, но не когда он находится за пределами ящика?
Сообщение
Anonymous » 03 окт 2024, 15:49
В моем проекте Flutter я хотел создать текстовое поле для поиска имен пользователей. У меня лежит в ящике и поиск и все работает нормально. Я хотел отобразить найденные имена пользователей внутри ListView, поэтому я использовал Listview.builder.
У меня проблема в том, что полученный список имеет пустое место вверху, но только тогда, когда я помещаю его в ящик. Я тестировал его в другом представлении без ящика, затем нет пустого места, но когда я меняю его так, чтобы он находился внутри ящика, в списке результатов вверху появляется пустое место.
Вот мой тест класс:
Код: Выделить всё
class Test extends StatelessWidget {
final List entries = ['A', 'B', 'C'];
final List colorCodes = [600, 500, 100];
List _searchResults = ["TestUser1", "TestUser2"]; // Die Liste der Suchergebnisse
@override
Widget build(BuildContext context) {
return Drawer(child: ListView(
padding: EdgeInsets.zero,
children: [
DrawerHeader(
decoration: BoxDecoration(
color: Color(0xFF2C2C2C),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Text(
'Quester',
style: TextStyle(
color: Colors.white,
fontSize: 28,
fontWeight: FontWeight.bold,
),
textAlign: TextAlign.center,
),
],
),
),
// Suchleiste mit Button
Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
children: [
Expanded(
child: TextField(
controller: SearchController(),
style: TextStyle(color: Colors.white),
decoration: InputDecoration(
hintText: 'Benutzernamen eingeben...',
hintStyle: TextStyle(color: Colors.white70),
enabledBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.white),
),
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.teal),
),
),
onSubmitted: (value) {
// Suchfunktion bei Enter auslösen
},
),
),
IconButton(
icon: Icon(Icons.search, color: Colors.white),
onPressed: () {
// Suchfunktion bei Button-Klick auslösen
},
),
],
),
),
// Dynamische Liste der Suchergebnisse
if (_searchResults.isNotEmpty)
Container(
decoration: BoxDecoration(
color: Colors.blueGrey.withOpacity(0.8), // Hellere graue Hintergrundfarbe
border: Border.all(color: Colors.blueGrey), // Rahmen um die gesamte Liste
borderRadius: BorderRadius.circular(10),
),
child: ListView.builder(
shrinkWrap: true,
itemCount: _searchResults.length,
itemBuilder: (context, index) {
return Container(
margin: EdgeInsets.symmetric(vertical: 4.0),
decoration: BoxDecoration(
color: Colors.blueGrey, // Hellere graue Farbe für die Listeneinträge
borderRadius: BorderRadius.circular(8),
border: Border.all(color: Colors.blueGrey), // Rahmen um jeden Eintrag
),
child: ListTile(
title: Text(
_searchResults[index],
style: TextStyle(color: Colors.white),
),
onTap: () {
},
),
);
},
),
),
ListTile(
leading: Icon(Icons.add, color: Colors.white),
title: Text('Item 1', style: TextStyle(color: Colors.white)),
onTap: () {
// Aktion für Item 1
},
),
ListTile(
leading: Icon(Icons.add, color: Colors.white),
title: Text('Item 2', style: TextStyle(color: Colors.white)),
onTap: () {
// Aktion für Item 2
},
),
// Weitere Items hier hinzufügen
],
),
);
}
}
Если вы измените «Ящик возврата...» на «Ящик возврата...», то в нем не будет пустого места.
Есть идеи?
Подробнее здесь:
https://stackoverflow.com/questions/790 ... t-not-when
1727959794
Anonymous
В моем проекте Flutter я хотел создать текстовое поле для поиска имен пользователей. У меня лежит в ящике и поиск и все работает нормально. Я хотел отобразить найденные имена пользователей внутри ListView, поэтому я использовал Listview.builder. У меня проблема в том, что полученный список имеет пустое место вверху, но только тогда, когда я помещаю его в ящик. Я тестировал его в другом представлении без ящика, затем нет пустого места, но когда я меняю его так, чтобы он находился внутри ящика, в списке результатов вверху появляется пустое место. Вот мой тест класс: [code] class Test extends StatelessWidget { final List entries = ['A', 'B', 'C']; final List colorCodes = [600, 500, 100]; List _searchResults = ["TestUser1", "TestUser2"]; // Die Liste der Suchergebnisse @override Widget build(BuildContext context) { return Drawer(child: ListView( padding: EdgeInsets.zero, children: [ DrawerHeader( decoration: BoxDecoration( color: Color(0xFF2C2C2C), ), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ Text( 'Quester', style: TextStyle( color: Colors.white, fontSize: 28, fontWeight: FontWeight.bold, ), textAlign: TextAlign.center, ), ], ), ), // Suchleiste mit Button Padding( padding: const EdgeInsets.all(8.0), child: Row( children: [ Expanded( child: TextField( controller: SearchController(), style: TextStyle(color: Colors.white), decoration: InputDecoration( hintText: 'Benutzernamen eingeben...', hintStyle: TextStyle(color: Colors.white70), enabledBorder: UnderlineInputBorder( borderSide: BorderSide(color: Colors.white), ), focusedBorder: UnderlineInputBorder( borderSide: BorderSide(color: Colors.teal), ), ), onSubmitted: (value) { // Suchfunktion bei Enter auslösen }, ), ), IconButton( icon: Icon(Icons.search, color: Colors.white), onPressed: () { // Suchfunktion bei Button-Klick auslösen }, ), ], ), ), // Dynamische Liste der Suchergebnisse if (_searchResults.isNotEmpty) Container( decoration: BoxDecoration( color: Colors.blueGrey.withOpacity(0.8), // Hellere graue Hintergrundfarbe border: Border.all(color: Colors.blueGrey), // Rahmen um die gesamte Liste borderRadius: BorderRadius.circular(10), ), child: ListView.builder( shrinkWrap: true, itemCount: _searchResults.length, itemBuilder: (context, index) { return Container( margin: EdgeInsets.symmetric(vertical: 4.0), decoration: BoxDecoration( color: Colors.blueGrey, // Hellere graue Farbe für die Listeneinträge borderRadius: BorderRadius.circular(8), border: Border.all(color: Colors.blueGrey), // Rahmen um jeden Eintrag ), child: ListTile( title: Text( _searchResults[index], style: TextStyle(color: Colors.white), ), onTap: () { }, ), ); }, ), ), ListTile( leading: Icon(Icons.add, color: Colors.white), title: Text('Item 1', style: TextStyle(color: Colors.white)), onTap: () { // Aktion für Item 1 }, ), ListTile( leading: Icon(Icons.add, color: Colors.white), title: Text('Item 2', style: TextStyle(color: Colors.white)), onTap: () { // Aktion für Item 2 }, ), // Weitere Items hier hinzufügen ], ), ); } } [/code] Если вы измените «Ящик возврата...» на «Ящик возврата...», то в нем не будет пустого места. Есть идеи? Подробнее здесь: [url]https://stackoverflow.com/questions/79050616/why-do-i-have-empty-space-in-my-listview-when-i-put-it-in-a-drawer-but-not-when[/url]