Skip to content

Instantly share code, notes, and snippets.

@ThrowJojo
Created May 1, 2021 00:15
Show Gist options
  • Save ThrowJojo/86a50014ad0c1ad6262723d40deb88f9 to your computer and use it in GitHub Desktop.
Save ThrowJojo/86a50014ad0c1ad6262723d40deb88f9 to your computer and use it in GitHub Desktop.
An example of ScrollController.
import 'package:flutter/material.dart';
final Color darkBlue = Color.fromARGB(255, 18, 32, 47);
void main() {
print(Colors.black.hashCode.toString());
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark().copyWith(scaffoldBackgroundColor: darkBlue),
debugShowCheckedModeBanner: false,
home: Scaffold(
body: MyWidget(),
),
);
}
}
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
ScrollController _controller = ScrollController();
void _onScrollEvent() {
final extentAfter = _controller.position.extentAfter;
print("Extent after: $extentAfter");
if (extentAfter < 300) {
// Load new items
}
}
@override
void initState() {
_controller.addListener(_onScrollEvent);
super.initState();
}
@override
void dispose() {
_controller.removeListener(_onScrollEvent);
super.dispose();
}
@override
Widget build(BuildContext context) {
return ListView.builder(
controller: _controller,
itemCount: 50,
itemBuilder: (context, index) {
return ListTile(
title: Text('List Item ${index + 1}')
);
}
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment