如何在flutter_swiper中动态禁用滑动按钮?

时间:2020-07-20 17:16:24

标签: flutter dart flutter-layout swiper flutter-animation

我正在使用 flutter_swiper 滑动图像。我有两个滑动器,如您所见,我想动态地禁用这两个滑动箭头我该怎么做?

enter image description here

我无法从开始禁用,因为我想在满足某些条件时将其禁用

下面是一些示例代码:-

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,
                                  ),
                                ),
                              ),
                            ],
                          ),
                        ))));
                      }
  }

现在,我想借助将在特定事件下触发的功能来禁用那些箭头

1 个答案:

答案 0 :(得分:1)

我已经找到了解决方案,可以在运行时借助布尔标志禁用iconPrevious:iconNext:。如果flag为false,则启用按钮;如果flag为true,则禁用按钮。

示例:

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;
    });
}