Flutter 如何将我的列表视图宽度设置为全屏宽度,以及如何使其自动滚动
如何将我的列表视图宽度设置为全屏宽度,以及如何使其在几秒钟后自动滚动Flutter 如何将我的列表视图宽度设置为全屏宽度,以及如何使其自动滚动,flutter,flutter-layout,Flutter,Flutter Layout,如何将我的列表视图宽度设置为全屏宽度,以及如何使其在几秒钟后自动滚动 void scrollAfter(ScrollController scrollController, {int seconds}) { Future.delayed(Duration(seconds: seconds), () { var offset = 550.0; var scrollDuration = Duration(seconds: 2); scrollContro
void scrollAfter(ScrollController scrollController, {int seconds}) {
Future.delayed(Duration(seconds: seconds), () {
var offset = 550.0;
var scrollDuration = Duration(seconds: 2);
scrollController.animateTo(offset,
duration: scrollDuration, curve: Curves.ease);
});
}
@override
Widget build(BuildContext context) {
var scrollController = ScrollController();
scrollAfter(scrollController, seconds: 2);
// TODO: implement build
return Container(child:
new StreamBuilder(
stream: Firestore.instance.collection('Top List').snapshots(),
builder: (BuildContext context,snapshot) {
if (!snapshot.hasData) return new Text("no");
var documentsLength = snapshot.data.documents.length;
return ListView.builder(itemCount: documentsLength,
scrollDirection: Axis.horizontal,
controller: scrollController,
shrinkWrap: true,
itemBuilder: (context, index) {
return buildlistItem((AllProduct.fromDocument(snapshot.data.documents[index])));
});
下面是我想要滚动的buildlistItem类表单######################################################################################################################################################################################################################################################################
Widget buildlistItem(所有产品所有列表){
返回
新手势检测器(
子:容器(
孩子:新卡(
标高:2.0,
边距:所有常数边集(5.0),
子:新堆栈(
对齐:对齐.center,
儿童:[
新英雄(
标记:alllist.title,
child:newimage.network(alllist.backgroundImageUrl,fit:BoxFit.cover),
),
新对齐(
子容器:新容器(
填充:常数边集全部(6.0),
孩子:排(
mainAxisAlignment:mainAxisAlignment.spaceBetween,
儿童:[
新专栏(
mainAxisSize:mainAxisSize.min,
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
新文本(alllist.title,
样式:新文本样式(颜色:Colors.white,fontFamily:“ChelaOne常规”),
],
),
图标按钮(按下时:(){
},
图标:新图标(图标。添加购物车,颜色:颜色。白色,),
)
],
),
颜色:颜色。黑色。不透明度(0.4),
),
对齐:对齐.bottomCenter,
),
],
),
),
),
onTap:(){},
);
}
}
您可以使用ScrollController
实现自动滚动部分。请参考下面的例子
import 'dart:async';
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
var scrollController = ScrollController();
var listView = ListView.builder(
itemBuilder: (context, index) => Text("$index"),
controller: scrollController,
);
scrollAfter(scrollController, seconds: 2);
return MaterialApp(
title: 'Trial',
home: Scaffold(
appBar: AppBar(title: Text('List scroll')), body: listView));
}
void scrollAfter(ScrollController scrollController, {int seconds}) {
Future.delayed(Duration(seconds: seconds), () {
var offset = 550.0;
var scrollDuration = Duration(seconds: 2);
scrollController.animateTo(offset,
duration: scrollDuration, curve: Curves.ease);
});
}
}
您可以使用列或行小部件垂直或水平对齐子项。重新分级将列表内容扩展到全宽,您可以使用扩展的小部件。 实现自动滚动非常简单。ListView小部件在其构造函数中接受controller:的参数
final ScrollController _scrollController = new ScrollController();
实现全宽度和自动滚动
new Column(
children: [
new Expanded(
new ListView.builder(builder:(BuildContext _context, int index){
return //your list elements here.
},
controller: _scrollController,
itemCount: count //total count of elements on list
),
),
// your other widgets here.
]
)
用于自动滚动
//your logic here
_scrollController.animateTo(double position, Duration duration, Curves curve);//refer to documentation
感谢回复…我像这样编辑我的代码,但它不会滚动..我正在使用水平滚动抱歉,当我给卡片加宽时它会滚动..但它只在应用程序运行时第一次滚动..如果我手动滚动,然后它不会滚动,现在我有3个项目..我想反向滚动..实际上我想自动滚动它当用户在该页面上时,您想前后滚动吗?两者..当应用程序启动时,它第一次向前滚动,但如果列表结束,则再次向后滚动失败断言:第149行位置12:“_positions.isNotEmpty”:ScrollController未连接到任何滚动视图…显示错误
//your logic here
_scrollController.animateTo(double position, Duration duration, Curves curve);//refer to documentation