flutter - Flutter 无法获取 ontap 函数来更改布尔列表
问题描述
伙计们,我一直在尝试让每个按钮更改布尔列表,并且当列表对于某个索引为 true 时出现严重故障时,容器变得可见。问题是由于某种原因我的手势按钮不想更改布尔列表但是更改任何其他整数列表都没有问题。
我一直试图让这个简单的事情工作几天,任何帮助都是好的。
我的代码:
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
class FilterRow extends StatefulWidget {
@override
FilterRow({Key key, this.title}) : super(key: key);
final String title;
_FilterRowState createState() => _FilterRowState();
}
class _FilterRowState extends State<FilterRow> {
int _filterIndex = 0;
List<bool> list = [
false,
false,
false,
false,
];
List<IconData> _filter = [FontAwesomeIcons.filter];
List<IconData> _filtericons = [
FontAwesomeIcons.clock,
FontAwesomeIcons.moneyBill,
FontAwesomeIcons.globe,
];
List<IconData> _uppericons = [
FontAwesomeIcons.cog,
FontAwesomeIcons.bookmark,
FontAwesomeIcons.user,
];
@override
Widget build(BuildContext context) {
return Row(children: <Widget>[
SizedBox(
width: 100.0,
child: Container(
height: 270.0,
padding: EdgeInsets.only(
left: 15,
),
child: Column(children: <Widget>[
Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
),
Column(
children: <Widget>[
GestureDetector(
behavior: HitTestBehavior.translucent,
onTap: () {
setState(() {
list[0] = false;
list[1] = true;
list[2] = false;
list[3] = false;
});
},
child: Container(
height: 60.0,
width: 60.0,
decoration: BoxDecoration(
color: Theme.of(context).accentColor,
borderRadius: BorderRadius.circular(30.0),
),
child: Icon(_filtericons[0],
size: 25.0, color: Theme.of(context).primaryColor),
),
),
),
),
],
)
]),
)),
Container(
padding: EdgeInsets.only(left: 10),
child: Column(
children: <Widget>[
Visibility(
visible: false
? list = [
false,
true,
false,
false,
]
: true,
child: Container(
height: 270.0,
width: 320.0,
decoration: BoxDecoration(
color: Theme.of(context).accentColor,
borderRadius: BorderRadius.circular(30.0),
),
)),
Visibility(
visible: false,
child: Container(
height: 270.0,
width: 320.0,
decoration: BoxDecoration(
color: Theme.of(context).accentColor,
borderRadius: BorderRadius.circular(30.0),
),
)),
Visibility(
visible: false,
child: Container(
height: 270.0,
width: 320.0,
decoration: BoxDecoration(
color: Theme.of(context).accentColor,
borderRadius: BorderRadius.circular(30.0),
),
)),
],
),
)
]);
}
}
解决方案
将 List 变量放入 Widget 函数中。
Widget build(Context context) {
List<bool> list = [
false,
false,
false,
false,
];
return // your code
}
推荐阅读
- jquery - 即使我成功返回数据,数据表也没有显示任何数据(我在 backedn 中使用 laravel)
- php - 在单个产品页面中使用额外选项
- flutter - Flutter,Future.wait如何实现众多功能?
- excel - 查找匹配的最后一行并检查下一列是否为空
- node.js - 在 Google Cloud Spanner 中插入或读取(如果记录已存在)的最高效方式
- javascript - 处理模态内容和搜索引擎优化
- java - DynamoDB Mapper 用于具有多个条件的条件保存
- math - 对于 IEEE-754 浮点运算,尾数是在 [0.5, 1) 还是 [1, 2)?
- node.js - 不同端口或相同端口但端点名称不同的服务
- c++ - 寻找下面给出的问题的递归解决方案