Почему только содержимое в ListView.builder () не прокручивается? - PullRequest
0 голосов
/ 31 октября 2019

У меня есть экран с текстовыми виджетами и ListView, и когда я пытаюсь прокрутить внутри ListView, он не позволяет мне прокручивать.

Мое тело - SingleChildScrollView, но оно не обеспечивает scrollView дляListView.builder. Я пытался обернуть ListView.build внутри Expanded, но не получилось.

class HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: new AppBar(
          title: Text("MyBar"),
          centerTitle: true,
        ),
        body: SingleChildScrollView(child: Column(
          children: <Widget>[
            Text(
                "Information"),
            Container(
                child: ListView.builder(
                    scrollDirection: Axis.vertical,
                    shrinkWrap: true,
                    itemCount: widget.match.players.length,
                    itemBuilder: (context, index) {
                      return Column(
                        children: <Widget>[
                          Card(
                              child: ListTile(
                            leading: CircleAvatar(
                              radius: 30.0,
                              foregroundColor: 
                                Theme.of(context).primaryColor,
                              backgroundColor: Colors.grey,
                              backgroundImage: 
                          CachedNetworkImageProvider("url"),
                            ),
                            title: new Row(
                                mainAxisAlignment:
                                    MainAxisAlignment.spaceBetween,
                                children: <Widget>[
                                  new Text("Some text",
                                    style: new TextStyle(
                                        fontWeight: FontWeight.bold),
                                  ),
                                  new Text(
                                    "Some text",
                                    style: new TextStyle(
                                        fontWeight: FontWeight.bold),
                                  ),
                                ]),

                          ))
                        ],
                      );
                    }))
          ],
        )));}
  } 

У всех есть идеи, как сделать прокрутку listView.builder ().

1 Ответ

2 голосов
/ 31 октября 2019

Вам нужно отключить прокрутку ListView.builder, чтобы прокрутить SingleChildScrollView. Вы можете добиться этого, установив одно из этих двух свойств на ListView.builder:

physics: NeverScrollableScrollPhysics()

или

primary: false

Но используя ListView.builder так, как вы его используете,он создаст все элементы одновременно. Если вы хотите эффективно использовать ListView.builder для создания элементов только тогда, когда они прокручиваются на экране, вы можете удалить SingleChildScrollView и просто использовать ListView.builder следующим образом:

ListView.builder(
  itemCount: widget.match.players.length + 1,
  itemBuilder: (context, index) {
    if (index == 0) {
      return Text("Information");
    }
    int listIndex = index - 1;
    // then you could use: widget.match.players[listIndex];
    return Column(...);
  }
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...