我try 将ListView.Builder放在一个列中,该列是SliverAppBar的对等体.因此,我需要利用CustomScrollview和SliverToBoxAdapter,以便列可以驻留在CustomScrollView中.
只要我将包覆面提取设置为True,所有这些都可以正常工作.
但是,出于性能原因,我不想使用包络处理(根据官方文档,这是非常昂贵的,并且抵消了让ListView.Builder延迟加载列表项的性能优势).
错误是:"100".这是因为柱子有无限高.
我想not必须硬编码的列的大小,因为这将是一个响应/自适应脚手架.
我的代码如下-我的问题是,有没有人能够从小使用带有ListView.Builder的柱,而不使用设置为True的包络处理,也不硬编码高度?
import 'package:flutter/material.dart';
class TestScaffold extends StatelessWidget {
const TestScaffold({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.blueGrey[100],
body: CustomScrollView(
slivers: [
SliverToBoxAdapter(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
mainAxisSize: MainAxisSize.min,
children: [
Expanded(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
const Text('Title 1'),
Expanded(
child: ListView.builder(
//shrinkWrap: true,
itemCount: 3,
itemBuilder: (context, index) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
height: 100,
width: 100,
color: Colors.red,
),
);
},
),
),
],
),
),
const SizedBox(
width: 10,
),
Expanded(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
const Text('Title 2'),
Expanded(
child: ListView.builder(
//shrinkWrap: true,
itemCount: 3,
itemBuilder: (context, index) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: Container(
height: 100,
width: 100,
color: Colors.green,
),
);
},
),
),
],
),
),
],
),
)
],
),
);
}
}