Я хотел бы знать, почему я не вижу содержимое ListView, если помещаю его в строку, которая находится внутри столбца? Спасибо
body: Center(
child: Column(
children: <Widget>[
Row(
children: <Widget>[
Flexible(
child: ListView(
children: [
Text('Text 1'),
Text('Text 2'),
],
),
),
],
),
],
),
),
Я поместил ListView внутрь Flexible, но он не работает.
Если вы запустите свой код, вы увидите эту ошибку:
Vertical viewport was given unbounded height.
Это означает, что высота не ограничена.
Вы должны установить shrinkWrap:
Должен ли быть экстент прокрутки в scrollDirection определяется просматриваемым содержимым.
Если вид прокрутки не сжимается, то вид прокрутки будет расшириться до максимально допустимого размера в scrollDirection. Если представление прокрутки имеет неограниченные ограничения в scrollDirection, затем shrinkWrap должен быть истинным.
к true
:
ListView(
shrinkWrap: true,
children: [
Text('Text 1'),
Text('Text 2'),
],
)
import 'package:flutter/material.dart';
const Color darkBlue = Color.fromARGB(255, 18, 32, 47);
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark().copyWith(
scaffoldBackgroundColor: darkBlue,
),
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Center(
child: Column(
children: <Widget>[
Row(
children: <Widget>[
Flexible(
child: ListView(
shrinkWrap: true,
children: [
Text('Text 1'),
Text('Text 2'),
],
),
),
],
),
],
),
),
),
);
}
}
Спасибо @MendelG за ваше решение и объяснение. Теперь проблема в том, что ListView не прокручивается. Кто-нибудь знает, как это сделать?
Вы можете обернуть ListView
виджетом Expanded
, он займет свободное место.
Padding(
padding: EdgeInsets.all(10),
child: Column(
children: <Widget>[
Expanded(
//this
child: Row(
children: <Widget>[
Expanded(
//this
child: ListView(
children: [
for (int i = 0; i < 100; i++) Text('Text $i'),
],
),
),
],
),
),
],
),
),
Узнайте больше о Неограниченная высота / ширина | Расшифровка флаттера
Спасибо за ваше решение и объяснение. Проблема с этим решением заключается в том, что ListView нельзя прокручивать. Как его включить?
Вы размещаете Center
внутри корпуса каркаса, и он будет прокручиваться, когда элементы выходят за пределы области просмотра?
Да, код выглядит так: body: Center( child: Column( children: <Widget>[ Expanded( child: Row( children: <Widget>[ Expanded( child: ListView( shrinkWrap: true, children: [ Text('Text 1'),
Вам нужно обеспечить больше детей ростом
Как я могу это сделать? Можете ли вы привести пример? Спасибо
хорошо, добавлен цикл для создания большего количества элементов
Рад помочь, вы можете узнать больше о макете
Вы пытались изменить AxisDirection на горизонтальное в ListView?