android - 如何根据 Flutter 中的 ListView 选择显示某些小部件?
问题描述
我有显示“今天”、“本周”和“详细信息”的 ListView。下面是一个定制设计的 Widget 的 ListView,它只显示温度、日期/小时和天气图标。我要做的是在默认情况下选择“今天”时显示每小时预测,并在选择“本周”时显示每日预测。在过去的几天里,我似乎遇到了一些困难。我感觉我无法从另一个列表视图更改该列表视图的内容。
我试图设置它,以便在单击“本周”时,每小时信息列表被删除并填充每日信息列表,但这不起作用,也不是一个好的解决方案。我想在每个标题的 onTap 中添加一个方法,例如“详细”方法,它只是将我带到一个新屏幕。
这是预测信息代码行,它可能像今天下午一样变得有点意大利面,所以对此表示歉意:D 我已经把我想要显示的所有信息放在里面,只是为了测试目的。
Container(
height: 150,
margin: EdgeInsets.fromLTRB(30, 0, 0, 30),
decoration: BoxDecoration(
color: Color(0xFF2F3148),
borderRadius: BorderRadius.only(
topLeft: Radius.circular(30.0),
bottomLeft: Radius.circular(30.0),
),
),
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: 1,
itemBuilder: (BuildContext context, int index) {
return Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
hourlyWeather[0],
hourlyWeather[1],
hourlyWeather[2],
hourlyWeather[3],
hourlyWeather[4],
hourlyWeather[5],
hourlyWeather[6],
hourlyWeather[7],
hourlyWeather[8],
hourlyWeather[9],
hourlyWeather[10],
hourlyWeather[11],
dailyWeather[0],
dailyWeather[1],
dailyWeather[2],
dailyWeather[3],
dailyWeather[4],
dailyWeather[5],
dailyWeather[6],
],
);
}),
),
这是上面的代码,我想用它来控制前面代码中显示的内容:
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: weatherInfo.length,
itemBuilder: (BuildContext context, int index) {
return GestureDetector(
onTap: () {
setState(() {
selectedIndex = index;
//Today
if (selectedIndex == index &&
weatherInfo[selectedIndex] ==
"Today") {
print("Test Today");
}
//This Week
if (selectedIndex == index &&
weatherInfo[selectedIndex] ==
"This Week") {
print("Test");
}
//Detail
if (selectedIndex ==
index && //GOING TO DETAIL SCREEN
weatherInfo[selectedIndex] ==
"Detailed") {
toDetailScreen();
//Sets the Today text to be underlined
selectedIndex = 0;
} //End of Detail IF statement
});
},
我真的很感谢你们给我指出正确方向的任何建议,这是一个非常漂亮的小应用程序,我很乐意让它看起来像这样发布,而不是在屏幕上添加一个完整的其他每日预测位同时显示所有信息。
如果需要,我很乐意澄清更多或添加一些代码。
谢谢!
解决方案
听起来您希望使用选项卡而不是列表视图来进行顶级选择。https://flutter.dev/docs/cookbook/design/tabs
另一种选择是使用 StreamBuilder 从数据流构建天气数据的 ListView,并让按钮将数据推送到流中。
推荐阅读
- spring - 为什么spring security oauth2客户端需要AuthorizationRequestRepository?
- php - 从 jQuery 调用控制器方法
- python - 点安装。已满足要求
- r - 在R的ggplot中为水平直线添加标签
- python-sphinx - 使用 numpydoc 和 sphinx 时格式损坏
- python - 基于具有默认值的形状创建 DataFrame
- ios - 如何使用正则表达式拆分字符串 ios objectivec
- python-3.x - 如何使用请求模块在python3中迭代URl
- jenkins - Jenkins 在 Mac 上找不到离子 CLI
- php - 如何用php连接localhost数据库?