как сделать так, чтобы ширина списка отображалась на всю ширину экрана, и как сделать автоматическую прокрутку - PullRequest
0 голосов
/ 02 сентября 2018

как дать ширину моего списка в полный экран и как сделать автоматическую прокрутку через несколько секунд ...

 void scrollAfter(ScrollController scrollController, {int seconds}) {
    Future.delayed(Duration(seconds: seconds), () {
      var offset = 550.0;
      var scrollDuration = Duration(seconds: 2);
      scrollController.animateTo(offset,
          duration: scrollDuration, curve: Curves.ease);
    });
  }
  @override
  Widget build(BuildContext context) {
    var scrollController = ScrollController();
    scrollAfter(scrollController, seconds: 2);
    // TODO: implement build
    return Container(child:
    new StreamBuilder(
        stream: Firestore.instance.collection('Top List').snapshots(),
        builder: (BuildContext context,snapshot) {
          if (!snapshot.hasData) return new Text("no");
          var documentsLength = snapshot.data.documents.length;
          return ListView.builder(itemCount: documentsLength,
              scrollDirection: Axis.horizontal,
              controller: scrollController,
              shrinkWrap: true,
              itemBuilder: (context, index) {

                return buildlistItem((AllProduct.fromDocument(snapshot.data.documents[index])));

              });

под моей формой класса buildlistItem, которую я хочу прокрутить ################################################## ################################################## ################################################## ################################################## #########################

 Widget buildlistItem(AllProduct alllist) {

    return
      new GestureDetector(
        child: Container(
          child: new Card(
            elevation: 2.0,
            margin: const EdgeInsets.all(5.0),
            child: new Stack(
              alignment: Alignment.center,
              children: <Widget>[
                new Hero(
                  tag: alllist.title,
                  child: new Image.network(alllist.backgroundImageUrl, fit: BoxFit.cover),
                ),
                new Align(
                  child: new Container(
                    padding: const EdgeInsets.all(6.0),
                    child: Row(
                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
                      children: <Widget>[
                        new Column(
                          mainAxisSize: MainAxisSize.min,
                          crossAxisAlignment: CrossAxisAlignment.start,
                          children: <Widget>[
                            new Text(alllist.title,
                                style: new TextStyle(color: Colors.white,fontFamily: "ChelaOne-Regular")),

                          ],
                        ),
                        IconButton(onPressed: (){


                        },
                          icon: new Icon(Icons.add_shopping_cart,color: Colors.white,),
                        )
                      ],
                    ),
                    color: Colors.black.withOpacity(0.4),
                  ),
                  alignment: Alignment.bottomCenter,
                ),
              ],
            ),
          ),
        ),
        onTap: () {},
      );
  }
}

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Вы можете использовать столбец или виджет строки, чтобы выровнять детей по вертикали или по горизонтали. Обновив содержимое списка до полной ширины, вы можете использовать расширенный виджет. Достижение автоматической прокрутки довольно просто. Виджет ListView принимает параметр контроллера: в своем конструкторе.

final ScrollController _scrollController = new ScrollController();

Достижение полной ширины и автоматической прокрутки.

new Column(
children: [
     new Expanded(
           new ListView.builder(builder:(BuildContext _context, int index){
               return //your list elements here.
             },
          controller: _scrollController,
          itemCount: count //total count of elements on list
         ),
       ),
      // your other widgets here.
   ]
)

для автоматической прокрутки

//your logic here
_scrollController.animateTo(double position, Duration duration, Curves curve);//refer to documentation
0 голосов
/ 02 сентября 2018

Вы можете использовать ScrollController, чтобы выполнить автоматическую прокрутку. Пожалуйста, обратитесь к приведенному ниже примеру.

import 'dart:async';

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    var scrollController = ScrollController();
    var listView = ListView.builder(
      itemBuilder: (context, index) => Text("$index"),
      controller: scrollController,
    );
    scrollAfter(scrollController, seconds: 2);
    return MaterialApp(
        title: 'Trial',
        home: Scaffold(
            appBar: AppBar(title: Text('List scroll')), body: listView));
  }

  void scrollAfter(ScrollController scrollController, {int seconds}) {
    Future.delayed(Duration(seconds: seconds), () {
      var offset = 550.0;
      var scrollDuration = Duration(seconds: 2);
      scrollController.animateTo(offset,
          duration: scrollDuration, curve: Curves.ease);
    });
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...