我想做一个笔记应用程序,但我遇到了一个问题。当我不滚动我的列表时,它看起来很棒(对我来说)但是当我滚动它时绿色背景移动到应用程序的顶部,我想剪切它并制作固定大小。我还想让这个列表更加自定义,在元素之间留出更大的边距并将形式更改为圆角矩形
body: Stack(
fit: StackFit.expand,
children: <Widget>[
Positioned(
top: 0.0,
child: Row(
children: <Widget>[
Container(
child: Text(
"Notes",
style: TextStyle(
color: Color.fromRGBO(107, 119, 141, 1),
fontSize: 72,
),
),
),
Container(
margin: EdgeInsets.only(top: 50),
child: Text(
"Never Settle",
style: TextStyle(
fontSize: 12,
color: Color.fromRGBO(107, 119, 141, 0.25),
),
),
),
SizedBox(width: 20),
Container(
child: Image.asset(
'assets/images/magnifier.png',
height: 44,
width: 44,
),
),
SizedBox(width: 30),
Container(
child: Image.asset(
'assets/images/3dot.png',
height: 44,
width: 44,
),
),
],
),
),
Positioned(
top: 75.0,
child: ListView.builder(
itemCount: dList.length,
itemBuilder: (context, index) {
return Ink(
color: Colors.green,
child: ListTile(
title: Text(
dList[index],
style: TextStyle(
fontSize: 25,
),
),
)
);
},
),
),
Positioned(
height: 55,
width: 55,
// top:0.0,
right: 20.0,
bottom: 20.0,
child: Image.asset(
'assets/images/plus.png',
height: 22,
width: 22,
),
),
],
),
),
);
}
}
答案 0 :(得分:0)
设置背景色为绿色ins脚手架并设置透明色为链接然后尝试
答案 1 :(得分:0)
所以我认为这发生在您身上,因为您使用的是 Stack 小部件。看起来不错,直到您移动列表,因为实际上它漂浮在您的顶部栏上。
我建议您使用 Scaffold 和 Column,这是您修改后的代码:
Scaffold(
body: Container(
color: Colors.blue,
child: Column(
children: <Widget>[
SizedBox(height: 50),
Container(
color: Colors.indigo,
child: Row(
children: <Widget>[
Container(
child: Text(
"Notes",
style: TextStyle(
color: Color.fromRGBO(107, 119, 141, 1),
fontSize: 72,
),
),
),
Container(
margin: EdgeInsets.only(top: 50),
child: Text(
"Never Settle",
style: TextStyle(
fontSize: 12,
color: Color.fromRGBO(107, 119, 141, 0.25),
),
),
),
SizedBox(width: 20),
Container(
child: Icon(Icons.search, size: 40, color: Colors.red),
),
SizedBox(width: 30),
Container(
child: Icon(Icons.menu, size: 40, color: Colors.red),
),
],
),
),
Expanded(
child: Container(
color: Colors.green,
child: ListView.separated(
separatorBuilder: (BuildContext context, int index) =>
const Divider(),
itemCount: dList.length,
itemBuilder: (context, index) {
return Ink(
color: Colors.green,
child: ListTile(
title: Text(
dList[index],
style: TextStyle(
fontSize: 25,
),
),
));
},
),
),
),
],
),
),
floatingActionButton:
FloatingActionButton(onPressed: () => {}, child: Icon(Icons.add)),
)
它的样子:
scaffold 的作用是为您提供完美的 Material Design 布局结构,它还用 Material 包装您的代码,以便您可以使用它的好处。
Scaffold 还为您提供了设置 FloatingActionButton 的机会,您可以在代码底部找到它,看看它是多么容易完成,您不需要创建自己的圆形按钮 - 它已经提供了。
给您的另一个提示是使用 Icon() 而不是导入您自己的图像,原因有以下三个:
Icon(Icons.search)
,就搞定了如果用 Icon
包裹 IconButton
,您可以立即获得一个带有点击动画的漂亮按钮。
阅读更多关于 Icon 和 IconButton
如果您想制作自定义列表图块,请尝试将其作为您的 ListViews itemBuilder:
return Padding(
padding: const EdgeInsets.fromLTRB(0, 0, 0, 8),
child: Container(
decoration: BoxDecoration(
border: Border.all(
color: Colors.black38.withOpacity(0.2)),
borderRadius:
BorderRadius.all(Radius.circular(20))),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
dList[index],
style: TextStyle(
fontSize: 25,
),
),
),
),
);
结果:
如果你用 Container 包裹东西,它会进入它的身体内部,那么你可以用圆形边框、颜色、边框等装饰这个容器。
最后一个提示是使用 ListView.separated
而不是 ListViev.builder
,如果您想轻松地在图块之间获得分隔符。
尝试为您调整代码并祝您好运,如果您有任何问题,请随时提出。