如何在appBar中显示PhotoViewGallery类索引值 [英] How to show PhotoViewGallery class index value in appBar

查看:316
本文介绍了如何在appBar中显示PhotoViewGallery类索引值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用photo_view_gallery类,我想将PhotoViewGallery.builder的当前图像 index 的值动态显示到appBar中.

I'm using photo_view_gallery class and I would like to show dynamically the value of current image index of PhotoViewGallery.builder into the appBar.

我是Flutter的新手,我在Google上搜索了很多,但找不到任何解决方案

I'm new in Flutter, I googled a lot but I can't found any solution for this

body: PhotoViewGallery.builder(
        itemCount: listaPagine.length,
        builder: (context, index) {
          saveIndex(index);
          String myImg =
              'http://www.attilofficina.altervista.org/phpbackend/JOB/000004/fullsize/' +
                  listaPagine[index].nomefile.toString() +
                  '.jpg';
          return PhotoViewGalleryPageOptions(
            imageProvider: AdvancedNetworkImage(myImg,
                retryLimit: 1, timeoutDuration: Duration(seconds: 30)),
          );
        },
      ),

我还尝试了将索引保存到另一个变量的函数,但是该值在appBar中仍然不可用

I also try a function that save index to another variable, but the value is still unavailable in appBar

此函数的代码和位置(在appBar中显示为空)

Here the code and position of this function (in appBar is shown null)

class GalleryPageState extends State<GalleryPage> {
int curr;
...
@override
  Widget build(BuildContext context) {
  ...
  saveIndex(int index) {
      int curr = index;
      print('*** curr = ' + curr.toString()); /// PRINTS CORRECT VALUE
      return curr;
    }
  ...
  return Scaffold(
  appBar: AppBar(
        title: Text(curr.toString(),  /// BUT IT SHOWS NULL
        ),
  ),      
  body: PhotoViewGallery.builder(
        itemCount: listaPagine.length,
        builder: (context, index) {
          salvaIndex(index);
          String myImg =
              'http://www.attilofficina.altervista.org/phpbackend/JOB/000004/fullsize/' +
                  listaPagine[index].nomefile.toString() +
                  '.jpg';
          return PhotoViewGalleryPageOptions(
            imageProvider: AdvancedNetworkImage(myImg,
                retryLimit: 1, timeoutDuration: Duration(seconds: 30)),
          );
        },
      ),
   ); 
  }
}

有人可以帮助我吗? 特别感谢mario

Can someone help me? special thanks mario

推荐答案

我认为您可以使用onPageChanged

import 'package:flutter/material.dart';
import 'package:photo_view/photo_view.dart';
import 'package:photo_view/photo_view_gallery.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  int _currentIndex = 0;

  final List<String> listaPagine = [
    'https://picsum.photos/id/451/200/300',
    'https://picsum.photos/id/200/200/300'
  ];
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('# $_currentIndex'),
      ),
      body: PhotoViewGallery.builder(
        itemCount: listaPagine.length,
        builder: (BuildContext context, int index) {
          String myImg = listaPagine[index];

          return PhotoViewGalleryPageOptions(
            imageProvider: NetworkImage(myImg),
          );
        },
        onPageChanged: (int index) {
          setState(() {
            _currentIndex = index;
          });
        },
      ),
    );
  }
}

这篇关于如何在appBar中显示PhotoViewGallery类索引值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆