如何在 flutter_swiper 中动态禁用滑动按钮?
How to disable swiper button dynamically in flutter_swiper?
我正在使用flutter_swiper刷图。如您所见,我有两个滑动器我想禁用这两个滑动器箭头动态我该怎么做?
我无法从一开始就禁用它,因为我想在满足某些条件时禁用它
这里有一些示例代码:-
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
var eImage = [
"img/eyes/1.png",
"img/eyes/2.png",
"img/eyes/3.png",
];
double height = 200;
int itemNo;
double eh = 200;
double ew = 200;
double nh = 100;
double nw = 300;
double lh = 100;
double lw = 100;
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
body: Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("img/wal.jpg"),
fit: BoxFit.fill,
),
),
child: Container(
child: Stack(
children: <Widget>[
Align(
alignment: Alignment(0, -0.6),
child: Container(
width: ew,
height: eh,
//color: Colors.purple,
child: new SizedBox(
child: Swiper(
itemBuilder:
(BuildContext context, int index) {
return Image.asset(
eImage[index],
);
},
itemCount: eImage.length,
itemWidth: 200,
itemHeight: 200,
control: new SwiperControl(),
layout: SwiperLayout.DEFAULT,
customLayoutOption: CustomLayoutOption(
startIndex: 1, stateCount: 3) ///<--- here i am trying to start from 1st index
.addRotate([
0 / 180,
0.0,
0 / 180
]).addTranslate([
Offset(-400.0, 0.0),
Offset(0.0, 0.0),
Offset(370, -40.0),
]),
),
height: 200,
width: 350,
),
),
),
],
),
))));
}
}
现在我想借助一个将在特定事件中触发的函数来禁用这些箭头
我通过在布尔标志的帮助下在 运行 时间禁用 iconPrevious:
和 iconNext:
找到了解决方案。如果标志为假,则启用按钮,如果标志为真,则禁用按钮。
示例:
var disable=false;
这是一个标志,如果值为 false,将允许显示滑动按钮
现在,在控制器中设置标志
control: new SwiperControl(
iconPrevious: disable?null:Icons.arrow_back_ios,
iconNext:disable?null:Icons.arrow_forward_ios,
),
使用按钮中的设置状态更改标志。
next(){
setState(() {
disable=true;
});
}
我正在使用flutter_swiper刷图。如您所见,我有两个滑动器我想禁用这两个滑动器箭头动态我该怎么做?
我无法从一开始就禁用它,因为我想在满足某些条件时禁用它
这里有一些示例代码:-
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
var eImage = [
"img/eyes/1.png",
"img/eyes/2.png",
"img/eyes/3.png",
];
double height = 200;
int itemNo;
double eh = 200;
double ew = 200;
double nh = 100;
double nw = 300;
double lh = 100;
double lw = 100;
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
body: Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("img/wal.jpg"),
fit: BoxFit.fill,
),
),
child: Container(
child: Stack(
children: <Widget>[
Align(
alignment: Alignment(0, -0.6),
child: Container(
width: ew,
height: eh,
//color: Colors.purple,
child: new SizedBox(
child: Swiper(
itemBuilder:
(BuildContext context, int index) {
return Image.asset(
eImage[index],
);
},
itemCount: eImage.length,
itemWidth: 200,
itemHeight: 200,
control: new SwiperControl(),
layout: SwiperLayout.DEFAULT,
customLayoutOption: CustomLayoutOption(
startIndex: 1, stateCount: 3) ///<--- here i am trying to start from 1st index
.addRotate([
0 / 180,
0.0,
0 / 180
]).addTranslate([
Offset(-400.0, 0.0),
Offset(0.0, 0.0),
Offset(370, -40.0),
]),
),
height: 200,
width: 350,
),
),
),
],
),
))));
}
}
现在我想借助一个将在特定事件中触发的函数来禁用这些箭头
我通过在布尔标志的帮助下在 运行 时间禁用 iconPrevious:
和 iconNext:
找到了解决方案。如果标志为假,则启用按钮,如果标志为真,则禁用按钮。
示例:
var disable=false;
这是一个标志,如果值为 false,将允许显示滑动按钮
现在,在控制器中设置标志
control: new SwiperControl(
iconPrevious: disable?null:Icons.arrow_back_ios,
iconNext:disable?null:Icons.arrow_forward_ios,
),
使用按钮中的设置状态更改标志。
next(){
setState(() {
disable=true;
});
}