我正在尝试使用 CustomScrollView 创建一个 ScrollView . 我需要的效果,和 this one 非常相似.
我需要 SliverList堆叠在 SliverAppbar 上方, 没有列表占据整个屏幕并隐藏 SliverAppbar。 我想这样做的原因是,我需要在该列表顶部附加一个持久定位小部件,除非列表堆叠在 SliverAppbar 上方,否则它不会出现。
这是我的 code .
最佳答案
第一步: 在 SliverAppBar 小部件中使用 ListView。使css溢出:隐藏效果。
第二步: 将 Controller 添加到 NestedScrollView 并在堆栈中滚动时移动按钮。加上计算你想要停止按钮移动的位置。
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
ScrollController scrollController;
final double expandedHight = 150.0;
@override
void initState() {
super.initState();
scrollController = new ScrollController();
scrollController.addListener(() => setState(() {}));
}
@override
void dispose() {
scrollController.dispose();
super.dispose();
}
double get top {
double res = expandedHight;
if (scrollController.hasClients) {
double offset = scrollController.offset;
if (offset < (res - kToolbarHeight)) {
res -= offset;
} else {
res = kToolbarHeight;
}
}
return res;
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.black,
body: Stack(
children: [
NestedScrollView(
controller: scrollController,
headerSliverBuilder: (context, value) {
return [
SliverAppBar(
pinned: true,
expandedHeight: expandedHight,
flexibleSpace: ListView(
physics: const NeverScrollableScrollPhysics(),
children: [
AppBar(
title: Text('AfroJack'),
elevation: 0.0,
),
Container(
color: Colors.blue,
height: 100,
alignment: Alignment.center,
child: RaisedButton(
child: Text('folow'),
onPressed: () => print('folow pressed'),
),
),
],
),
),
];
},
body: ListView.builder(
physics: const NeverScrollableScrollPhysics(),
itemCount: 80,
itemBuilder: (BuildContext context, int index) {
return Text(
'text_string'.toUpperCase(),
style: TextStyle(
color: Colors.white,
),
);
},
),
),
Positioned(
top: top,
width: MediaQuery.of(context).size.width,
child: Align(
child: RaisedButton(
onPressed: () => print('shuffle pressed'),
child: Text('Suffle'),
),
),
),
],
),
);
}
}
关于Flutter CustomScrollView 长条堆叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52133238/
在Windows计算机上运行VisualC++,我发现以下代码行似乎是通过调用__dtoui3的呼叫损坏内存(此调用后一堆字节更改。具体来说,DBL_MAX的值似乎是在两次中打印的,在记忆中的随机位置行)doubletemp=DBL_MAX;unsignedintblissfullyUnaware=(unsignedint)temp;但是,以下没有:doubletemp=0;unsignedintblissfullyUnaware=(unsignedint)temp;谁能阐明为什么会发生这种情况?看答案[cons.fpint]/1浮点类型的prvalue可以转换为整数类型的prvalue。转换
我有一个可爱的Highcharts图,其中包含堆叠的列。我想要一个可以切换堆叠是“正常”还是“百分比”的按钮。我正在尝试以下操作(不起作用):$('#button').click(function(){varchart=$('#container').highcharts();chart.options.plotOptions.column.stacking='percent';chart.redraw();});在这里fiddle:http://jsfiddle.net/CRKcj/2/如有任何帮助,我们将不胜感激! 最佳答案 不
我刚刚开始使用Chrome开发者工具中的控制台(一般来说对Javascript来说还是个新手)。我注意到,当我连续两次记录同一个变量(在本例中是一个对象)时,日志会堆叠它并在它旁边放置一个小数字图标。我点击这个以为我将能够看到该对象两次(因为它已经更新了两次),但是没有任何反应。更多说明图片:如您所见,Object下拉列表旁边的蓝色圆圈中有一个小“2”。第一个日志在3处有Object.num,第二个在4处,但是我只能看到第二个。任何关于如何查看两个日志的答案都将不胜感激。:). 最佳答案 发生这种情况是因为您两次记录同一个对象。即使
我有一个用这个片段创建的对象,它看起来像这样:...varsteps=newArray();this.createStep=function(){steps.push(newstep());returnsteps[steps.length-1];};this.getSteps=function(){returnsteps;};//returnsArraythis.removeStep=function(pos){steps.splice(parseInt(pos),1);};//integerpossitionzerobasethis.insertStep=function(pos){
可能重复问题BarchartinJavascript:stackedbars+groupedbars我正在尝试创建一个堆叠条形图,让您可以将2个值(深蓝色和中蓝色)与上周的数据点(“后面”的次要浅蓝色)进行比较。从multiBarChart()和.stacked(true)开始,我首先尝试将这两个星期合并到一个包含14个柱的数组中,其中x位置可以帮助对条形图进行分组。我试图形成我的组合对象数组,其中.x属性的值为0、0.3、1,1.3、2、2.3等不幸的是,与lineChart()不同,它不使用x值进行定位。另一个想法是利用.stacked(false)组,提供具有相同x值的4个项目(
我正在使用GoogleVisulaizationAPI来呈现一个图表,该图表显示具有多个值的单行,如下所示:使用以下代码:vardata=google.visualization.arrayToDataTable([['','0%','25%','50%','75%','100%',{role:'annotation'}],['Mood',3,7,20,25,45,'']]);varoptions={isStacked:true,hAxis:{minValue:0}}varchart=newgoogle.visualization.BarChart(document.getElemen
我正在使用D3.js,但在为具有多个系列的面积图设置堆叠布局时遇到了问题。我的数据有两种可能的结构(如果有帮助的话)。一种是提供给脚本的原始数据,结构如下:vardata=[{key:'Group1',value:37,date:'04/23/12'},{key:'Group2',value:12,date:'04/23/12'},{key:'Group3',value:46,date:'04/23/12'},{key:'Group1',value:32,date:'04/24/12'},{key:'Group2',value:19,date:'04/24/12'},{key:'Gro
我正在使用vis.js来显示时间线。我有以下元素:varitems=newvis.DataSet([{id:1,content:'1)NextTo2',start:'2014-04-2000:00:00',end:'2014-04-2000:59:59'},{id:2,content:'2)NextTo1',start:'2014-04-2001:00:00',end:'2014-04-2002:59:59'},{id:3,content:'Underneath',start:'2014-04-2000:00:00',end:'2014-04-2005:59:59'}]);id1和id
我正在创建一个堆叠条形图,但我需要它不仅仅是将两个值加在一起并显示它。例如:stackgraph此图应该显示“目标”百分比和实际百分比。因此,如果该列的目标值为70,实际值为30,它将显示0-30的实际数字颜色,然后继续30-70的目标颜色。有没有办法真正让它们像那样重叠,而不仅仅是总数为100? 最佳答案 您必须将这些参数添加到您的代码中-为X轴启用堆叠并为Y轴禁用它:xAxes:[{stacked:true}],yAxes:[{stacked:false,ticks:{beginAtZero:true,},}]
关于DC.jsgithub,StockMarketSelectionStrategybyLonRiesberg被列为使用dc.js库的示例。Lon能够创建堆叠的行图表并将其显示为单行。我希望能够完成同样的事情。我只能弄清楚如何创建一个行图,如图所示inmycodepen,及以下。HTMLJavascriptitems=[{Id:"01",Name:"Red",Price:"1.00",Quantity:"1",TimeStamp:111},{Id:"02",Name:"White",Price:"10.00",Quantity:"1",TimeStamp:222},{Id:"04",N