我需要修改行距。不幸的是,height
的{{1}}参数会影响第一行以及您在此处看到的内容:
TextStyle
我立即想到一个解决方案:class Screen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.blue,
appBar: AppBar(backgroundColor: Colors.blue.withOpacity(0.5)),
body: Container(
color: Colors.yellow,
child: Container(
color: Colors.red,
child: Text(
'first line\nsecond line',
style: TextStyle(height: 2.5, fontSize: 20),
),
),
),
);
}
}
带有Stack
小部件,值为Positioned
为负。 我们分两步进行,首先将其嵌入top
中。
Stack
输出看起来像以前一样:
第二步:用class Screen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.blue,
appBar: AppBar(backgroundColor: Colors.blue.withOpacity(0.5)),
body: Container(
color: Colors.yellow,
child: Stack(
children: <Widget>[
Container(
color: Colors.red,
child: Text(
'first line\nsecond line',
style: TextStyle(height: 2.5, fontSize: 20),
),
),
],
),
),
);
}
}
小部件包装它。
Positioned
这几乎是我想要的。但是,如果您注意颜色,则蓝色之前是黄色。添加class Screen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.blue,
appBar: AppBar(backgroundColor: Colors.blue.withOpacity(0.5)),
body: Container(
color: Colors.yellow,
child: Stack(
// fit: StackFit.loose,
children: <Widget>[
Positioned( // .fill
top: -20,
// bottom: 0,
// left: 50,
// right: 0,
child: Container(
color: Colors.red,
child: Text(
'first line\nsecond line',
style: TextStyle(height: 2.5, fontSize: 20),
),
),
),
],
),
),
);
}
}
小部件会使Positioned
扩展而不适合内容-这使我无法在更复杂的布局中使用它-例如列表显示。颤振输出警告Stack
我注意到,只要添加了顶部/左侧/底部/右侧中的任何一个,Positioned窗口小部件便会执行此操作-在它适合内容之前。我尝试使用Stack的RenderStack object was given an infinite size during layout.
属性进行实验,该属性的位置为fit
初始化程序,但没有成功。