我需要做这个设计
但是,当我添加listview时,它不起作用
我需要垂直列表而不是水平
listview。生成器(scrollDirection:Axis.vertical,shrinkWrap:true,itemCount:12,itemBuilder:(上下文,索引){返回文本(“我的小部件卡将在此处添加”);})
这是我的密码
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class MyAppNameAppTemplesListing extends StatefulWidget {
MyAppNameAppTemplesListing({Key key}) : super(key: key);
@override
_MyAppNameAppTemplesListingState createState() =>
_MyAppNameAppTemplesListingState();
}
class _MyAppNameAppTemplesListingState
extends State<MyAppNameAppTemplesListing> {
@override
Widget build(BuildContext context) {
return Stack(
children: <Widget>[
Container(
height: MediaQuery.of(context).size.height*.4,
),
Container(
height: MediaQuery.of(context).size.height*.14,
color: Colors.pink[100],
),
Positioned(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text("Temples",style: TextStyle(fontSize: 24,fontWeight: FontWeight.bold),),
),
),
Positioned(
top: 55,
child: Padding(
padding: const EdgeInsets.only(left: 4,right: 4),
child:
Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Stack(
children: <Widget>[
Container(
height: 50.0,
width: MediaQuery.of(context).size.width*.97,
color: Colors.transparent,
child: new Container(
decoration: new BoxDecoration(
color: Colors.white,
borderRadius: new BorderRadius.only(
topLeft: const Radius.circular(40.0),
bottomLeft: const Radius.circular(40.0),
bottomRight: const Radius.circular(40.0),
topRight: const Radius.circular(40.0))),
child: new Center(
child: Container(
margin: EdgeInsets.only(left: MediaQuery.of(context).size.width*.4),
child: new Text("Favourite",style: TextStyle(fontSize: 16, color: Colors.grey,fontWeight: FontWeight.bold),)),
)),
),
Container(
height: 50.0,
width: MediaQuery.of(context).size.width*.5,
color: Colors.transparent,
child: new Container(
decoration: new BoxDecoration(
gradient: LinearGradient(
// Where the linear gradient begins and ends
begin: Alignment.topRight,
end: Alignment.bottomLeft,
// Add one stop for each color. Stops should increase from 0 to 1
stops: [0.1, 0.5, 0.7, 0.9],
colors: [
// Colors are easy thanks to Flutter's Colors class.
Colors.pink[800],
Colors.pink[700],
Colors.red[600],
Colors.red[400],
],
),
color: Colors.redAccent[100],
borderRadius: new BorderRadius.only(
topLeft: const Radius.circular(40.0),
bottomLeft: const Radius.circular(40.0),
bottomRight: const Radius.circular(40.0),
topRight: const Radius.circular(40.0))),
child: new Center(
child: new Text("ALL",style: TextStyle(color: Colors.white,fontWeight: FontWeight.bold),),
)),
),
],
),
ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: 2,
itemBuilder: (context,index){
return Text("my widget card will add here");
})
],
),
),
),
],
);
}
}
首先,你真的需要优化你的小部件。你本可以用更简单的方法实现设计。
现在,您在当前的小部件设计模式上犯了一个小错误。您需要将您的Stack()
包装在Column()
下,并从Stack()
移动ListView()
,使其成为Column()
的第二个子项,它应该可以工作。
完整源代码:
Column(children: <Widget>[
Stack(children: <Widget>[
Container(
height: MediaQuery.of(context).size.height * .4,
),
Container(
height: MediaQuery.of(context).size.height * .14,
color: Colors.pink[100],
),
Positioned(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
"Temples",
style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
),
),
),
Positioned(
top: 95,
child: Padding(
padding: const EdgeInsets.only(left: 4, right: 4),
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Stack(
children: <Widget>[
Container(
height: 50.0,
width: MediaQuery.of(context).size.width * .97,
color: Colors.transparent,
child: new Container(
decoration: new BoxDecoration(
color: Colors.white,
borderRadius: new BorderRadius.only(
topLeft: const Radius.circular(40.0),
bottomLeft: const Radius.circular(40.0),
bottomRight: const Radius.circular(40.0),
topRight: const Radius.circular(40.0))),
child: new Center(
child: Container(
margin: EdgeInsets.only(
left:
MediaQuery.of(context).size.width *
.4),
child: new Text(
"Favourite",
style: TextStyle(
fontSize: 16,
color: Colors.grey,
fontWeight: FontWeight.bold),
)),
)),
),
Container(
height: 50.0,
width: MediaQuery.of(context).size.width * .5,
color: Colors.transparent,
child: new Container(
decoration: new BoxDecoration(
gradient: LinearGradient(
// Where the linear gradient begins and ends
begin: Alignment.topRight,
end: Alignment.bottomLeft,
// Add one stop for each color. Stops should increase from 0 to 1
stops: [0.1, 0.5, 0.7, 0.9],
colors: [
// Colors are easy thanks to Flutter's Colors class.
Colors.pink[800],
Colors.pink[700],
Colors.red[600],
Colors.red[400],
],
),
color: Colors.redAccent[100],
borderRadius: new BorderRadius.only(
topLeft: const Radius.circular(40.0),
bottomLeft: const Radius.circular(40.0),
bottomRight: const Radius.circular(40.0),
topRight: const Radius.circular(40.0))),
child: new Center(
child: new Text(
"ALL",
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold),
),
)),
),
],
),
],
),
),
),
]),
ListView.builder(
primary: false,
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: 2,
itemBuilder: (context, index) {
return Text("my widget card will add here");
})
])
您需要为一个水平滚动的小部件定义一个固定的高度。请尝试用定义高度的容器或大小的盒子包装列表视图。
Container(
height: MediaQuery.of(context).size.height*0.3,
// height: 50,
child: ListView.builder(
scrollDirection: Axis.horizontal,
shrinkWrap: true,
itemCount: 12,
itemBuilder: (context,index){
return Text("my widget card will add here");
}),
)
必须将listview包装在容器或大小框中。。
Container(
child: ListView.builder(
scrollDirection: Axis.horizontal,
shrinkWrap: true,
itemCount: 2,
itemBuilder: (context,index){
return Text("my widget card will add here");
}),
),
如果列表仍然没有显示,请尝试在容器上给出高度
和宽度
。
我有一个xml布局,它有以下视图:滚动视图->Relationvelayout->Some views+Tablayout+ViewPager->RecylerView(在ViewPager的片段中)。ViewPager有一些固定的高度(保持它“wrap_content”根本不会显示它)。现在的问题是Recylerview永远不会滚动。我已经尝试了几个已经发布的解决方案,比如在“嵌套滚动视图”中包
我们Java开发人员有时会使用来确保我们为每个特定于线程的堆栈提供了1MB的空间。现在,我经常感到困惑,JVM从哪里借用了1MB,从堆或系统内存中借用,或者Java为线程分配任何特定的内存。你能帮我理解一下吗? 此外,我们是否有一个可视化(插件)运行时工具,可以以可理解的方式显示堆和堆栈的内容? 提前感谢。
问题内容: 内核堆栈和用户堆栈有什么区别?为什么要使用内核堆栈?如果在ISR中声明了局部变量,它将存储在哪里?每个进程都有自己的内核堆栈吗?那么,进程如何在这两个堆栈之间进行协调? 问题答案: 内核堆栈和用户堆栈有什么区别? 简而言之,除了在内存中使用不同的位置(并因此为堆栈指针寄存器使用不同的值)之外,什么也没有,而且通常使用不同的内存访问保护。也就是说,在用户模式下执行时,即使映射了内核内存(
我正试图用服务栈实现Swagger。我已经用nuget安装了带有swagger的服务栈。当前的DLL版本大多报告为3.9.56.0。 我正在努力遵循…https://github.com/ServiceStack/ServiceStack.UseCases/tree/master/SwaggerHelloWorld提供的例子 这个指令看起来相当简单... 在我通过nuget安装后(按照文档说明),
问题内容: 在Java中,是否有任何方法可以查看完整的,未截断的堆栈跟踪(例如,通过增加记录的帧数),或者以其他方式查看堆栈跟踪的 底部 ?通常,堆栈跟踪会从顶部截断为1024帧,但是对于堆栈溢出问题,这是毫无价值的,因为您确实需要查看是谁触发了触发递归的调用,位于底部附近。在堆栈 中间 截断会更好,但是显然Sun的JVM不够聪明。 也许甚至一些特定于Sun的特殊标志?我尝试将堆栈大小减小到最小允
以下是完整的问题: 编写一个java方法,它将接受两个排序后的堆栈a和B(最小值在顶部),并返回一个排序后的堆栈D(最小值在顶部)。只允许使用堆栈操作,如pop、push、isEmpty和peek。 示例:假设A={(top)1,4,7,9}和B={(top)2,3,6},那么函数将返回一个新的堆栈D={(top)1,2,3,4,6,7,9} 我写的代码是这样的: 你怎么认为?