flutter——四张图片点击对应的照片就进入对应单张图片

实现需求:四图到单图的右下角索引!!!用好后端的index字段。点击对应的照片就进入对应单张图片

1、四图点击其中一张

return GestureDetector(
  onTap: (){
    print("finish 第一次点击的索引值-----${index}");
    Navigator.of(context).pushNamed("/single",arguments: {"images":images,"beginIndex":index});
  },

2、在single页面,主要是接收从finish传递过来的索引值,作为一个中转站。

// 从finish页面传递过来的
int beginIndex = (ModalRoute.of(context)?.settings.arguments as Map<String, dynamic>?)?['beginIndex'];


body: Column(
  children: [
    SingleContent(images: images,beginIndex: beginIndex,),
    SingleTips(),
    SingleButton(),
    SingleFooter()
  ],
),

3、在singlecontent进行赋值和使用

难点:pagecontroller的使用

class SingleContent extends StatefulWidget {

  final List<HistoryOutputImages>? images;
  final int beginIndex;

  const SingleContent({Key? key,required this.images,required this.beginIndex});

  
  State<SingleContent> createState() => _SingleContentState();
}
class _SingleContentState extends State<SingleContent> {

  // 当前图片的索引,finish给他一个初始值,就能跳到对应的图片了!!!
  late int currIndex;

  // 拿到当前是第几张照片
  late PageController _pageController;
  int _currentPage = 0;

  
  void initState() {
    super.initState();
    //!!!!!!在这里进行赋值!!!!!!!
    currIndex = widget.beginIndex;

    _pageController = PageController(initialPage: currIndex ?? 0);
   
     // ???这个操作还没怎么懂?
    _pageController.addListener(() {
      int newPage = _pageController.page?.round() ?? 0;
      if (newPage != _currentPage) {
        setState(() {
          _currentPage = newPage;
        });
      }
    });
  }

赋值

itemBuilder: (context,index){
  // 能不能等到真正滑动到了才有信息。
  print("当前图片的所有信息-${widget.images?[index]}");
  currIndex = widget.images![index].index;
  print("当前图片的索引:${currIndex}");

使用

Text("${currIndex + 1}/${widget.images?.length}",style: TextStyle(color: Colors.white,fontSize: 15),)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值