我正在尝试制作一个自定义小部件。在要跳转索引的元素列表右侧的简单“A到Z滚动条”。我的问题是,实际上我需要使用列表的大小…
你可以推断出 Listview 通过减法来减小尺寸 height 的 AppBar 对于整个屏幕 height 。你可以得到 AppBar 通过在赋值前定义高度:
Listview
height
AppBar
class _MyHomePageState extends State<MyHomePage> { AppBar myBar = AppBar(title: Text(widget.title),); @override Widget build(BuildContext context) { return Scaffold( appBar: myBar, )
然后你的 Listview 高度将是:
var _listHeight = MediaQuery.of(context).size.height - myBar.prefferedSize.height ;
每个字母大小将是:
var _letterHeight = height/27 ;
您应该使字母的尺寸小于上述尺寸,以便在它们之间留出一些间距。
小部件 不能 取决于另一个小部件的大小。 另一方面,它可以依赖于 限制 。
为此,您可以使用 LayoutBuilder 获取约束并相应地构建小部件:
LayoutBuilder
Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text("Hello World")), body: LayoutBuilder( builder: (context, constraints) { if (constraints.biggest.width > 100) { return Text('Hello'); } return Container(); }, ), ); }