【问题标题】:How to edit the height of item in the `ListView`?如何编辑“ListView”中项目的高度?
【发布时间】:2021-01-20 08:30:40
【问题描述】:

官方文档已将height 放在container 中,但是当我重复代码时。我发现,不管是小价值还是大价值。我的物品的高度没有改变。这是我的代码

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:tweet_ui/embedded_tweet_view.dart';
import 'package:tweet_ui/models/api/tweet.dart';

class HerrListView extends StatefulWidget {
  final List<Tweet> items;
  final int extent;

  HerrListView({Key key, @required this.items, this.extent}) : super(key: key);

  @override
  createState() => _ListViewState();
}

class _ListViewState extends State<HerrListView> {
  String title = 'Long List';
  String prevTitle = '';
  List<Tweet> items;
  double itemSize;

  // List<String> duplicateItems;
  TextEditingController textController;
  ScrollController con;

  @override
  void initState() {
    super.initState();
    items = widget.items;
    // duplicateItems = List.from(items);
    textController = TextEditingController();
    prevTitle = title;
    con = ScrollController();
    con.addListener(() {
      if (con.offset >= con.position.maxScrollExtent &&
          !con.position.outOfRange) {
        setState(() {
          title = "reached the bottom";
        });
      } else if (con.offset <= con.position.minScrollExtent &&
          !con.position.outOfRange) {
        setState(() {
          title = "reached the top";
        });
      } else {
        setState(() {
          title = prevTitle;
        });
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        title: title,
        home: Scaffold(
          appBar: AppBar(
            title: Text(title),
          ),
          body: ListView.builder(
            padding: const EdgeInsets.all(10),
            controller: con,
            itemExtent: widget.extent.toDouble(),
            itemCount: items.length,
            itemBuilder: (context, index) {
              return Container(
                height: 100,
                color: Colors.amber[index * 100],
                child: Text('Hi'),
              );
              // return Expanded(
              //   child: EmbeddedTweetView.fromTweet(widget.items[index]),
              // );
              // return Card(
              //   child: Padding(
              //     padding: const EdgeInsets.all(16.0),
              //     child: Text(
              //       '${items[index].text}',
              //       style: TextStyle(fontSize: 22.0),
              //     ),
              //   ),
              // );
            },
          ),
        ));
  }

  void dispose() {
    // Don't forget to dispose the ScrollController.
    con.dispose();
    super.dispose();
  }
}

尝试: 我曾尝试将resizeToAvoidBottomPadding: false, 放入Scaffold,但不起作用

问题: 如何编辑 ListView 项的高度?

【问题讨论】:

  • 将 height 属性更改为较小的值会缩小它,删除它会缩小到它的子尺寸

标签: flutter listview dart layout


【解决方案1】:

ListView.itemExtend 属性强制子级具有给定的范围。

删除这一行

itemExtent: widget.extent.toDouble(),

更多信息:https://api.flutter.dev/flutter/widgets/ListView/itemExtent.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 2014-08-07
    • 1970-01-01
    相关资源
    最近更新 更多