我有一个具有图像(地点) ListView 的应用程序,然后在点击时返回一个新页面,显示有关该地点的某些详细信息。我关心的是详细信息页面,我的布局是我在顶部有一个图像,在它下面有一些文本和一个扩展的 ListView 。我想要的是我可以滚动浏览整个页面。我想到的是只有展开的 ListView 是可滚动的。
详情页代码如下:
import 'package:flutter/material.dart';
import 'package:craglist/cragspot.dart';
class CragDetailsScreen extends StatelessWidget {
final CragLocation loc;
final _placeTitleStyle = const TextStyle(
fontSize: 40.0, fontWeight: FontWeight.bold, color: Colors.black);
CragDetailsScreen(this.loc);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Details"),
),
body: new Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
new Container(
height: 300.0,
decoration: new BoxDecoration(
image: new DecorationImage(
fit: BoxFit.cover,
image: new AssetImage(loc.placeImage),
),
),
),
new Padding(
padding: const EdgeInsets.all(8.0),
child: new Text(
loc.name,
style: _placeTitleStyle,
),
),
new Padding(
padding: const EdgeInsets.only(left: 8.0),
child: new Text(
loc.desc,
),
),
new Padding(
padding: const EdgeInsets.fromLTRB(8.0, 8.0, 8.0, 0.0),
child: new Divider(
height: 15.0,
),
),
new Padding(
padding: const EdgeInsets.only(left: 8.0, right: 8.0),
child: new Text(
"Crags",
style: _placeTitleStyle,
),
),
new Expanded(child: _buildCragList()),
],
),
);
}
Widget _buildCragList() {
return new ListView.builder(
itemCount: loc.crag.length,
itemBuilder: (context, i) {
return _buildRow(loc.crag[i]);
});
}
Widget _buildRow(Crag crag) {
List<Widget> widcrag = [];
crag.routes.forEach((f) {
widcrag.add(
new ListTile(
dense: true,
title: new Text(f.name),
trailing: new Text(f.grade),
),
);
});
return new ExpansionTile(
title: new Text(crag.name),
children: widcrag,
);
}
}
另外 - 是否有可能在我滚动图像时调整大小?在屏幕上为展开的 ListView 提供更多空间。
最佳答案
您可以将所有内容包装在 ListView.builder 中,然后添加一个 if 语句以确定它是否在第一个小部件上工作。如果它位于第一个小部件,它会添加所有应该位于顶部的内容。如果不是,它会添加索引为 +1 的普通列表项。像这样:
new ListView.builder(
itemCount: loc.crag.length,
itemBuilder: (context, index) {
int i = index;
if (i == 0) {
return new Column(children: <Widget>[
new Container(
height: 300.0,
decoration: new BoxDecoration(
image: new DecorationImage(
fit: BoxFit.cover,
image: new AssetImage(loc.placeImage),
),
),
),
new Padding(
padding: const EdgeInsets.all(8.0),
child: new Text(
loc.name,
style: _placeTitleStyle,
),
),
new Padding(
padding: const EdgeInsets.only(left: 8.0),
child: new Text(
loc.desc,
),
),
new Padding(
padding: const EdgeInsets.fromLTRB(8.0, 8.0, 8.0, 0.0),
child: new Divider(
height: 15.0,
),
),
new Padding(
padding: const EdgeInsets.only(left: 8.0, right: 8.0),
child: new Text(
"Crags",
style: _placeTitleStyle,
),
),
],);
} else {
_buildRow(loc.crag[i+1]);
}
}
)
关于Flutter - 可滚动容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50965005/
一、环境变量右键点击我的电脑-属性:然后找到环境变量 1.Android的SDK不在C盘的话需要额外配这个到用户环境变量:ANDROID_HOMED:\AndroidSDK2.然后在系统变量:Path中添加一条这样的值 D:\Flutter\flutter\bin 这个值写flutter包解压的实际地址即可 3.在系统变量中添加两个镜像变量: 变量名:FLUTTER_STORAGE_BASE_URL 变量值:https://storage.flutter-io.cn 变量名:PUB_HOSTED_URL 变量
因此,我们的页面中有以下代码:OnOff这是2个单选按钮。'开和关'。“关闭”是默认值。使用Watir-webdriver和Ruby,我们想要选择“打开”单选按钮。我们这样做:browser.radio(:id=>"HasRegistration_true").set但在这样做时,我们得到以下错误:`WebElement.clickElement':Elementcannotbescrolledintoview:[objectHTMLInputElement](Selenium::WebDriver::Error::MoveTargetOutOfBoundsError)我们知道Sele
我正在尝试滚动网页以查找并单击滚动页面时延迟加载的内容。我正在使用以下命令require'watir-webdriver'@browser=Watir::new:firefox@browser.send_keys:space我在firefox上使用网络驱动程序,我在ubuntu上,但它不工作。在下面的ruby代码中,我试图向下滚动页面,直到找不到带有:id的元素。该元素正在延迟加载。几秒钟后我超时了,不知道下面的代码有什么问题。When/^deal(\d+)isloaded$/do|id|(0..5).eachdo|click|@browser.send_keys:spaceend
当一个元素在selenium的View之外并且试图与之交互时,selenium通常会首先隐式地将元素滚动到View中。这很棒,只是烦人的是它通常将元素放入View中。我的意思是,如果元素位于窗口下方,它会向下滚动足够多直到元素刚好与窗口边缘接壤。通常这很好,但是当在周围有边框的网站上工作时,这将导致许多此类错误Selenium::WebDriver::Error::UnknownError:unknownerror:Elementisnotclickableatpoint(438,747).Otherelementwouldreceivetheclick:...因为通常网页的边框都在它
我想在保持文本/图像不透明的同时使我的容器背景透明。只能使用HTML做到这一点吗?这是我的代码:看答案我看到了您的问题,如果我正确理解您,我想我知道您可以做什么。我注意到的一件事是,在我进一步走之前,看起来您正在使用引导程序代码。如果您更改了可能与此相关的CSS样式表,则可能会更好,更有效,也可能不会破坏整体代码的其他元素,但是让我们看看我的解决方案是否对您有效。基本上您想做的是:1)在您的HTML中编写一个“样式”标签,然后在其中放入样式(CSS)属性(您可以将其放入HTML代码的标题中以更好地跟踪它)。2)使用提供背景颜色的“RGBA”格式,并将其不透明度为“0”作为代码段的第四值。因此,
经过recenttutorial关于使用Git为Ruby部署设置AWSElasticBeanstalk,我只是从我的CI服务器设置了一个ElasticBeanstalk环境。但是,应用程序无法启动。我查看日志发现bundleinstall失败并显示一条错误消息。Fetchinggit@github.com:example/private-repository.gitHostkeyverificationfailed.fatal:Theremoteendhungupunexpectedly[31mGiterror:commandgitclone'git@github.com:exampl
一、概览实现效果如下:二、项目环境1、nodejs版本node-vv16.16.02、npm版本npm-vnpmWARNconfigglobal`--global`,`--local`aredeprecated.Use`--location=global`instead.8.15.03、vue脚手架版本vue-V@vue/cli5.0.8三、创建vue项目1、创建名为vuetest的项目vuecreatevuetest选择Default([Vue2]babel,eslint) 2、切换到项目目录,启动项目cdvuetestnpmrunserve 3、使用浏览器预览 http://localh
我在网上查了几个Ruby教程,他们似乎什么都用数组。那么如何在Ruby中实现以下数据结构呢?堆栈队列链表map组 最佳答案 (从评论中移出)好吧,通过限制堆栈或队列方法(push、pop、shift、unshift),数组可以是堆栈或队列。使用push/pop提供LIFO(后进先出)行为(堆栈),而使用push/shift或unshift/pop提供FIFO行为(队列)。map是hashes,和一个Set类已经存在。您可以使用类实现链表,但数组将使用标准数组方法提供类似于链表的行为。 关
我有一个用作新闻提要的meteor.js应用程序,可以发布话题,人们可以实时评论话题。这意味着当您查看帖子时,将在帖子上方和下方添加新评论,并且在上方添加新话题。这会将您正在关注的帖子向下推到视口(viewport)之外,这是意想不到的(除非您已经滚动到顶部)。更新滚动以在添加新内容时保持相同视觉中心的最佳方法是什么? 最佳答案 你可以试试这个方法:保存scrollTop值;在内容前添加内容(即,在关注的帖子上方添加新帖子);将新内容的高度添加到步骤1中保存的值;滚动到新值。这是一个例子:functionrandomString()
我有一个包含可滚动内容的div,在某个scrollTop值返回到顶部。varcontainer=document.getElementById('container');functionscroll_function(){varnew_position_top=container.scrollTop;if(new_position_top>600){container.scrollTop=0;}}container.addEventListener('scroll',scroll_function);#container{width:300px;height:300px;overflo