Я столкнулся с небольшой проблемой, которая, безусловно, легко разрешима, но я не могу найти никакого решения. Все предлагаемые темы касаются пользовательских фонов... Вот мой код:
class HomeTest extends StatefulWidget {
const HomeTest({super.key});
@override
State<HomeTest> createState() => _HomeTestState();
}
class _HomeTestState extends State<HomeTest> {
final courantController = TextEditingController();
@override
Widget build(BuildContext context) {
final soldes = FirebaseFirestore.instance.collection('Soldes');
return Scaffold(
appBar: AppBar(title: const Text('Test')),
body: SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.all(10),
child: Column(
children: [
const Text("text"),
const SizedBox(height: 20),
const Text(
'another text',
textAlign: TextAlign.center,
),
Container(
color: Colors.white,
height: 50,
),
const SizedBox(height: 10),
Container(
color: Colors.white,
height: 100,
child: Text('Container text')),
const AnnoyingList(),
],
),
),
));
}
}
class AnnoyingList extends StatefulWidget {
const AnnoyingList({super.key});
@override
State<AnnoyingList> createState() => _AnnoyingListState();
}
class _AnnoyingListState extends State<AnnoyingList> {
@override
Widget build(BuildContext context) {
return SizedBox(
height: 250,
child: ListView(children: [
ListTile(
tileColor: const Color.fromARGB(93, 88, 127, 158),
shape: RoundedRectangleBorder(
side: const BorderSide(width: 2),
borderRadius: BorderRadius.circular(50), //<-- SEE HERE
),
title: const Text('Tile 1'),
),
const SizedBox(height: 20),
ListTile(
tileColor: const Color.fromARGB(93, 88, 127, 158),
shape: RoundedRectangleBorder(
side: const BorderSide(width: 2),
borderRadius: BorderRadius.circular(50), //<-- SEE HERE
),
title: const Text('Tile 2'),
),
const SizedBox(height: 20),
ListTile(
tileColor: const Color.fromARGB(93, 88, 127, 158),
shape: RoundedRectangleBorder(
side: const BorderSide(width: 2),
borderRadius: BorderRadius.circular(50), //<-- SEE HERE
),
title: const Text('Tile 3'),
),
const SizedBox(height: 20),
ListTile(
tileColor: const Color.fromARGB(93, 88, 127, 158),
shape: RoundedRectangleBorder(
side: const BorderSide(width: 2),
borderRadius: BorderRadius.circular(50), //<-- SEE HERE
),
title: const Text('Tile 4'),
),
const SizedBox(height: 20),
ListTile(
tileColor: const Color.fromARGB(93, 88, 127, 158),
shape: RoundedRectangleBorder(
side: const BorderSide(width: 2),
borderRadius: BorderRadius.circular(50), //<-- SEE HERE
),
title: const Text('Tile 5'),
),
const SizedBox(height: 20),
ListTile(
tileColor: const Color.fromARGB(93, 88, 127, 158),
shape: RoundedRectangleBorder(
side: const BorderSide(width: 2),
borderRadius: BorderRadius.circular(50), //<-- SEE HERE
),
title: const Text('Tile 6'),
),
]),
);
}
}
Проблема в том, что ListView выходит за пределы SizedBox и доступен для просмотра за его пределами.
перед перемещением списка
после перемещения списка
Как видите, я попытался добавить контейнер, но очевидно, что как только я помещаю в него что-то, он адаптирует свою ширину. Есть ли простое решение, чтобы список оставался внутри SizedBox? Просто кажется, что фон прозрачен или что-то в этом роде, но мне не удалось решить эту проблему, изменив тему materialapp... Спасибо !
Оберните каждый ListTile
карточкой
Card(
child: ListTile(//...)
//...
)
попробуйте добавить этот параметр в ListView
.
physics: const NeverScrollableScrollPhysics(),
Спасибо, но я хочу, чтобы его можно было прокручивать, но я не хочу, чтобы он был виден за пределами размера. Оборачивать плитки в карты работает, как предложил Дариуш Кубица, хотя я не понимаю, почему...
Я не знаю, когда я меняю ListTile на другой виджет, такой как Elevatedbutton, все работает нормально. Я видел это решение у другого человека, и кто-то дал этот совет.