Есть ли ограниченный виджет, который может ограничить ListView.builder в столбце? - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь поместить виджеты ListView.builder в виджет Column, однако общее решение, предоставляемое командой флаттера, заключается в размещении неограниченного ListView.builder в виджете Expanded или Flexible. Проблема с этим заключается в том, что ListView.builder теперь заполняет как можно больше места в столбце (как показано ниже).

Есть ли способ, чтобы ListView.builder занимал только необходимое место?

import 'package:flutter/material.dart';

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

class MyApp extends StatefulWidget {
  // This widget is the root of your application.
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  List<Text> lst = [Text('first'), Text('second')];

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter ListView',
      home: SafeArea(
        child: Scaffold(
          body: Column(
            children: <Widget>[
              Flexible(
                child: ListView.builder(
                  itemCount: lst.length,
                  itemBuilder: (context, index) {
                    return Center(
                      child: lst[index],
                    );
                  },
                ),
              ),
              FlatButton(
                color: Colors.blue,
                child: Text("Add Third"),
                onPressed: () {
                  setState(() {
                    lst.add(Text("Third"));
                  });
                },
              ),
              Text("Next Item"),
            ],
          ),
        ),
      ),
    );
  }
}

enter image description here

1 Ответ

0 голосов
/ 22 апреля 2020

Вы можете использовать shrinkWrap: true свойство listview, чтобы ограничить размер представления списка.

 child: ListView.builder(
                  shrinkWrap: true, //added line
                  itemCount: lst.length,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...