简体   繁体   English

用于 Listview.Builder 的 Flutter 滚动条

[英]Flutter Scrollbar for Listview.Builder

I would like to implement a Scrollbar on a Listview.Builder infinite list with over 100 cards.我想在包含 100 多张卡片的 Listview.Builder 无限列表上实现滚动条。 However, while the below code runs, the scrollbar does not appear at any time.然而,当下面的代码运行时,滚动条不会在任何时候出现。 It is always invisible.它总是不可见的。

I am wrapping the Listview.Builder in the scrollview, seen below.我将 Listview.Builder 包装在滚动视图中,如下所示。

I have seen little documentation on Flutter's Scrollbar besides the official docs.除了官方文档外,我很少看到关于 Flutter 的 Scrollbar 的文档。 https://docs.flutter.io/flutter/material/Scrollbar-class.html https://docs.flutter.io/flutter/material/Scrollbar-class.html

Any advice would be greatly appreciated!任何建议将不胜感激!

Widget build(BuildContext context) {
return new Scaffold(
  appBar: new AppBar(
    title: new Text("Cards"),
  ),
  body: new RefreshIndicator(
    child: new Container(
      child: new Column(
        children: <Widget>[
          new Flexible(
            child: new StreamBuilder(
              stream: FirebaseStream
                 builder: (context, snapshot) {
          //I wrap the Listview.builder 
          //in the Scrollbar right below here
                new Scrollbar(child: ListView.builder(
                  controller: _CardExamplecrollController,
                      [code continues...]

Wrapping ListView with a Scrollbar widget should display a scrollbar when the list is scrolled, regardless if you're using ListView.builder or List<Widget> for the ListView.使用Scrollbar小部件包装ListView应该在列表滚动时显示滚动条,无论您使用的是ListView.builder还是List<Widget>作为 ListView。 Verified using Flutter stable channel version 1.22.4使用 Flutter 稳定通道版本 1.22.4 验证

Here's a sample这是一个示例

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

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

class _MyHomePageState extends State<MyHomePage> {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Scrollbar(
          child: ListView.builder(
            itemCount: 30,
            itemBuilder: (context, index) {
              return Card(
                child: Container(
                  padding: EdgeInsets.all(16.0),
                  child: Text('Item ${index + 1}'),
                ),
              );
            },
          ),
        ),
      ),
    );
  }
}

演示

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM