隐藏其他控件时,如何将Listview滚动到零位置?

时间:2019-01-10 06:07:43

标签: listview dart flutter scrollbar

enter image description here

  

我正在学习Flutter。我有带有Listview的页面,该页面显示   水平滚动中的图像。另外,我还有另一个listview   在水平Listview的底部显示图像。现在,当我   通过水平滚动检查Listview数据并最后到达   项目的位置,当时,我检查了底部的其他数据   使用垂直滚动的listview,第一个listview是不可见的。这个   完美。但是当我从底部滚动到顶部时,水平列表视图   仍然保持在最后位置而不是零位置。   我该怎么做?

我已附上我的代码和屏幕截图,我想要什么?

[![import 'package:flutter/material.dart';

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

class _HomePageState extends State<HomePage1> {
  BuildContext context;

  @override
  Widget build(BuildContext context) {
    this.context = context;
    // TODO: implement build
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
          appBar: AppBar(
            centerTitle: true,
            backgroundColor: Colors.white,
            title: Text(
              'Demo App',
              style: TextStyle(color: Colors.black),
            ),
          ),
          body: SingleChildScrollView(
            scrollDirection: Axis.vertical,
            child: Column(
              children: <Widget>\[
                _buildTrandingUI(),
                _buildcardwithimg('assets/blue.png', ''),
                _buildcardwithimg('assets/blue.png', ''),
              \],
            ),
          )),
    );
  }

  @override
  void initState() {
    super.initState();
  }

  //Design Sale UI
  _buildcardwithimg(String imgpath, String text) {
    return Container(
      height: 380,
      margin: const EdgeInsets.symmetric(vertical: 8.0),
      child: new Stack(
        children: <Widget>\[
          new Container(
            margin: const EdgeInsets.only(right: 8.0, left: 8.0),
            decoration: new BoxDecoration(
              color: Colors.white,
              shape: BoxShape.rectangle,
              borderRadius: new BorderRadius.circular(8.0),
              boxShadow: <BoxShadow>\[
                new BoxShadow(
                  color: Colors.grey,
                  blurRadius: 10.0,
                  offset: new Offset(0.0, 10.0),
                )
              \],
              image: DecorationImage(
                  fit: BoxFit.cover, image: new AssetImage(imgpath)),
            ),
            child: new Container(
              alignment: Alignment.topLeft,
              padding: const EdgeInsets.all(10.0),
              child: Text(
                text,
                style: TextStyle(
                    color: Colors.white,
                    fontWeight: FontWeight.bold,
                    fontSize: 14.0),
              ),
            ),
          ),
        \],
      ),
    );
  }

  //Desing Tranding UI
  _buildTrandingUI() {
    List<String> titlearr = \[\];
    titlearr.add('The Grunge Collection!');
    titlearr.add('On Point!');
    titlearr.add('A Fresh Edge To Every Wear');
    titlearr.add('Up to 50% Off');

    List<String> sbutitlearr = \[\];
    sbutitlearr.add('Born For the Road');
    sbutitlearr.add('Premium Bags That Steak The Spotlight');
    sbutitlearr.add('Printed Tees');
    sbutitlearr.add('Born For the Road');

    List<String> Traimgarr = \[\];
    Traimgarr.add('assets/grun.png');
    Traimgarr.add('assets/onpoint.png');
    Traimgarr.add('assets/grun.png');
    Traimgarr.add('assets/onpoint.png');

    return Container(
        height: 280.0,
        margin: const EdgeInsets.symmetric(vertical: 4.0),
        child: new Stack(
          children: <Widget>\[
            new Container(
              margin: const EdgeInsets.only(left: 8.0, right: 8.0),
              decoration: new BoxDecoration(
                  color: Colors.white,
                  shape: BoxShape.rectangle,
                  borderRadius: BorderRadius.circular(8.0),
                  boxShadow: <BoxShadow>\[
                    new BoxShadow(
                      color: Colors.grey,
                      blurRadius: 10.0,
                      offset: new Offset(0.0, 10.0),
                    )
                  \]),
              child: new Container(
                alignment: Alignment.topLeft,
                padding: const EdgeInsets.all(10.0),
                child: Text(
                  'Trending Now',
                  style: TextStyle(color: Colors.blueGrey),
                ),
              ),
            ),
            new Center(
                child: new Container(
              height: 245.0,
              margin: const EdgeInsets.only(left: 10.0, right: 10.0, top: 20.0),
              child: ListView.builder(
                  scrollDirection: Axis.horizontal,
                  itemCount: Traimgarr.length,
                  itemBuilder: (context, index) {
                    return Column(
                      crossAxisAlignment: CrossAxisAlignment.center,
                      mainAxisSize: MainAxisSize.min,
                      children: <Widget>\[
                        Container(
                          height: 190.0,
                          width: 280.0,
                          margin: EdgeInsets.all(10.0),
                          child: Image.asset(
                            Traimgarr\[index\],
                            fit: BoxFit.cover,
                          ),
                        ),
                        Text(
                          titlearr\[index\],
                          style: TextStyle(fontWeight: FontWeight.bold),
                        ),
                        Text(
                          sbutitlearr\[index\],
                          style: TextStyle(color: Colors.grey),
                        )
                      \],
                    );
                  }),
            ))
          \],
        ));
  }
}][1]][1]

0 个答案:

没有答案