首页 > 解决方案 > Flutter如何删除滚动条列表视图顶部的填充

问题描述

首先,对不起我的英语不好。所以我的问题是为什么滚动条顶部有一些填充以及如何删除它?我认为我的代码中的覆盖小部件存在问题,但我找不到问题以及如何解决它。请帮忙,谢谢。PS:我不想使用默认的下拉小部件,因为我不太喜欢这个设计,所以我在其他代码的帮助下制作了一个自定义下拉按钮。

所以这是我的代码:

import 'package:flutter/material.dart';

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  bool dropdownOpen = false;
  OverlayEntry dropdown;
  dynamic actionKey = LabeledGlobalKey("actionKey");
  ScrollController sc = ScrollController();
  
  OverlayEntry createDropdown() {
    RenderBox renderBox = actionKey.currentContext.findRenderObject();
    Offset offset = renderBox.localToGlobal(Offset.zero);
    return OverlayEntry(
      builder: (context) {
        return Positioned(
          left: offset.dx,
          width: renderBox.size.width,
          top: offset.dy + renderBox.size.height,
          height: 230,
          child: Material(
            elevation: 20,
            child: Scrollbar(
              isAlwaysShown: true,
              controller: sc,
              child: ListView.builder(
                controller: sc,
                padding: EdgeInsets.all(0),
                itemCount: 5,
                itemBuilder: (BuildContext context, int index){
                  return Container(
                    height: 50,
                    alignment: Alignment.center,
                    child: Text((index+1).toString())
                  );
                }
              )
            )
          )
        );
      }
    );
  }
  
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(primaryColor: Colors.red),
      home: Scaffold(
        body: Center(
          child: GestureDetector(
            key: actionKey,
            child: Container(
              height: 50,
              width: 100,
              color: Colors.yellow,
              alignment: Alignment.center,
              child: Text("Click")
            ),
            onTap: (){
              setState((){
                if(dropdownOpen){
                  dropdown.remove();
                  dropdownOpen = false;
                } else {
                  dropdown = createDropdown();
                  Overlay.of(context).insert(dropdown);
                  dropdownOpen = true;
                }
              });
            }
          )
        )
      ),
    );
  }
}

这就是它的样子: 图片

标签: flutterdartflutter-layoutscrollbar

解决方案


推荐阅读