无法在 SingleChildScrollView 下访问 Listview 中的滚动控制器

时间:2021-05-22 10:28:51

标签: flutter

我无法访问 scrollContoller 中的 ListView.builder。我认为这是因为它低于 SingleChildScrollView (当我删除 SingleChildScrollView 时,我开始从附加到 scrollController 的侦听器中获取打印语句)。我需要从 offset 中的 scrollController 访问 ListView.builder,但不确定如何操作。这是一个最小的例子。我如何从 listView 中的控制器获取监听器打印..

import 'package:flutter/material.dart';

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  ScrollController scrollController = ScrollController();

  @override
  void initState() {
    scrollController.addListener(() {
      print("Why am I not getting print statements....");
    });

    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        elevation: 0.0,
      ),
      body: SingleChildScrollView(
        child: Column(
          children: [
            Container(
              width: MediaQuery.of(context).size.width,
              height: 400,
              color: Colors.orange,
            ),
            ListView.builder(
              controller: scrollController,
              physics: ScrollPhysics(),
              shrinkWrap: true,
              itemCount: 30,
              itemBuilder: (context, index) {
                return Container(
                  color: Colors.primaries[index % Colors.primaries.length].withOpacity(0.5),
                  child: ListTile(
                    title: Text('Item $index'),
                  ),
                );
              },
            ),
          ],
        ),
      ),
    );
  }
}

void main() {
  runApp(MaterialApp(home: HomePage()));
}

0 个答案:

没有答案