Flutter 颤振无法获取ontap函数以更改boolian列表
伙计们,我一直在尝试让每个按钮改变bool列表,当列表在某个索引中变为真时,容器变得可见,但失败很大。问题是出于某种原因,我的手势按钮不想改变boolian列表,但改变任何其他整数列表都没有问题 我已经试着让这件简单的事情工作了几天,任何帮助都是好的 我的代码:Flutter 颤振无法获取ontap函数以更改boolian列表,flutter,Flutter,伙计们,我一直在尝试让每个按钮改变bool列表,当列表在某个索引中变为真时,容器变得可见,但失败很大。问题是出于某种原因,我的手势按钮不想改变boolian列表,但改变任何其他整数列表都没有问题 我已经试着让这件简单的事情工作了几天,任何帮助都是好的 我的代码: import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; class Filter
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),
),
)),
],
),
)
]);
}
}
导入“包装:颤振/材料.省道”;
导入“package:font_awesome_flatter/font_awesome_flatter.dart”;
类FilterRow扩展StatefulWidget{
@凌驾
FilterRow({Key-Key,this.title}):超级(Key:Key);
最后的字符串标题;
_FilterRowState createState()=>\u FilterRowState();
}
类_FilterRowState扩展状态{
int_filterIndex=0;
列表=[
假,,
假,,
假,,
假,,
];
列表_filter=[FontAwesomeIcons.filter];
列表_filtericons=[
FontAwesomeIcons.clock,
FontAwesomeIcons.moneyBill,
FontAwesomeIcons.globe,
];
列表_uppericons=[
FontAwesomeIcons.cog,
FontAwesomeIcons.bookmark,
FontAwesomeIcons.user,
];
@凌驾
小部件构建(构建上下文){
返回行(子项:[
大小盒子(
宽度:100.0,
子:容器(
身高:270.0,
填充:仅限边缘设置(
左:15,
),
子项:列(子项:[
划船(
mainAxisSize:mainAxisSize.min,
mainAxisAlignment:mainAxisAlignment.start,
儿童:[
),
纵队(
儿童:[
手势检测器(
行为:HitTestBehavior.transparent,
onTap:(){
设置状态(){
列表[0]=false;
列表[1]=真;
列表[2]=假;
列表[3]=假;
});
},
子:容器(
身高:60.0,
宽度:60.0,
装饰:盒子装饰(
颜色:主题。背景。强调颜色,
边界半径:边界半径。圆形(30.0),
),
子:图标(_filtericons[0],
尺寸:25.0,颜色:主题。背景。原色),
),
),
),
),
],
)
]),
)),
容器(
填充:仅限边缘设置(左:10),
子:列(
儿童:[
可见度(
可见:假
?列表=[
假,,
是的,
假,,
假,,
]
:没错,
子:容器(
身高:270.0,
宽度:320.0,
装饰:盒子装饰(
颜色:主题。背景。强调颜色,
边界半径:边界半径。圆形(30.0),
),
)),
可见度(
可见:假,
子:容器(
身高:270.0,
宽度:320.0,
装饰:盒子装饰(
颜色:主题。背景。强调颜色,
边界半径:边界半径。圆形(30.0),
),
)),
可见度(
可见:假,
子:容器(
身高:270.0,
宽度:320.0,
装饰:盒子装饰(
颜色:主题。背景。强调颜色,
边界半径:边界半径。圆形(30.0),
),
)),
],
),
)
]);
}
}
将列表变量放入小部件函数中
Widget build(Context context) {
List<bool> list = [
false,
false,
false,
false,
];
return // your code
}
小部件构建(上下文){
列表=[
假,,
假,,
假,,
假,,
];
返回//您的代码
}
通过删除@override修复了这个问题。我看不出你在任何地方都在使用
列表
来设置值。你为什么不只粘贴相关的代码呢?刚刚清理了代码,我实际上也在我的手势检测器的ontap函数中使用列表来更改值。我确实这样做了,但我的想法仍然是一样的,只是在我的visibility wid上获取我的可见:false?列表=[false,true,false,false,]:true,
标记为死代码。