【问题标题】:On back press the page goes again on top of list error后按时页面再次出现在列表错误的顶部
【发布时间】:2019-06-06 05:45:39
【问题描述】:

我有一个 imageUrlList ,它 onTap 会全屏打开图像,但是当我返回到图像列表时,它会在页面顶部到达第一张图像,然后我应该一直向下滚动。

class _PageOneState extends State<PageOne> with AutomaticKeepAliveClientMixin<PageOne> {
  ScrollController scroller = ScrollController();
  @override
  bool get wantKeepAlive => true;
  List<dynamic> imageUrlList;
  getImageUrls() async {
    var url = 'https://motivational.firebaseio.com/PNG.json';
    await http.get(url).then((res) {
      if (res.statusCode == 200) {
        var resData = json.decode(res.body);
        setState(() {
          imageUrlList = resData['URL'];
        });}
    });
  }
  @override
  void initState() {
    super.initState();
    getImageUrls();
  }
@override
  Widget build(BuildContext context) {
    super.build(context); 
    return Scaffold(
      resizeToAvoidBottomPadding: false,
      body:imageUrlList != null ?
      StaggeredGridView.countBuilder(
        key: UniqueKey(),
        padding: const EdgeInsets.all(8.0),
        crossAxisCount: 4,
        itemCount:  imageUrlList.length,
        itemBuilder: (BuildContext context,int index) {
          String imgPath =imageUrlList[index].toString();
          return new Material(
            elevation: 8.0,
            borderRadius:
            new BorderRadius.all(new Radius.circular(8.0)),
            child: new InkWell(
              onTap: () {
              Navigator.push(
                    context,
                    new MaterialPageRoute(
                        builder: (context) =>
                        new FullScreenImagePage(imgPath)));
              },
              child: new Hero(
                tag: imgPath,
                child: new FadeInImage(
                  //  image: new NetworkImage(imgPath),
                  image: new CachedNetworkImageProvider(imgPath),
                  fit: BoxFit.cover,
                  placeholder: new AssetImage("assets/pbv.png"),
                ),
              ),
            ),
          );
        },
        staggeredTileBuilder: (i) =>
        new StaggeredTile.count(2, i.isEven ? 2 : 3),
        mainAxisSpacing: 8.0,
        crossAxisSpacing: 8.0,
      )
          : new Center(
        child: new CircularProgressIndicator(),
      ),

    );

  }
}

有没有一种功能可以在我全屏打开后仍然坚持该特定图像。

【问题讨论】:

    标签: list flutter dart


    【解决方案1】:

    试试这个。 Navigator.of(context).pushNamed('/screen2');

    【讨论】:

    • 这段代码中没有screen2。有一个FullScreenImagePage,但在initstate中添加它会导致不显示任何图像。虽然我什至尝试过screen2,但它不起作用
    • 类 FullScreenImagePage 扩展 StatelessWidget { String imgPath; FullScreenImagePage(this.imgPath);@override Widget build(BuildContext context) { return Scaffold( body: new SizedBox.expand( child: new Container( decoration: new BoxDecoration(gradient: backgroundGradient), child: new Stack( children: [新对齐(对齐:Alignment.center,孩子:新英雄(标签:imgPath,孩子:新Image.network(imgPath),),),
    猜你喜欢
    • 2017-01-13
    • 2020-07-06
    • 2013-10-16
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    • 2021-02-10
    相关资源
    最近更新 更多