我想不斷檢查是否可以滾動。
@override
void initState() {
super.initState()。
WidgetsBinding.instance!.addPostFrameCallback((duration) {
print("${_scrollViewController.position.maxScrollExtent}") 。
///如果可滾動則列印為true,否則為false。
print("isScrollable = ${_scrollViewController.position.maxScrollExtent != 0})。
});
我試過這段代碼,但它只檢測到一次,而不是連續檢測。 我應該怎么做?
uj5u.com熱心網友回復:
使用NotificationListener widget.
舉例:
NotificationListener<ScrollNotification> (
孩子。ListView(
children: MyListChilren())。
onNotification: (ScrollNotification scrollNotif) {
print(scrollNotif.metrics.maxScrollExtent)。
},
);
uj5u.com熱心網友回復:
我通過在'build'方法中添加'addPostFrameCallback'來實作你想要的東西,如下所示。
你可以通過點擊這個例子代碼中的浮動按鈕來檢查列印日志。 浮動按鈕可以切換 "容器 "高度,以改變ListView的可滾動或不可滾動。
當呼叫'build'方法時,'addPostFrameCallback'回呼在重建后被呼叫,并檢查滾動是否可滾動。
import 'package:flutter/material.dart'。
void main() {
runApp(MyApp())。
}
class MyApp extends StatelessWidget{
@override
Widget build(BuildContext context) {
return MaterialApp(
標題。'Flutter Demo'。
主題。ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity。
),
主頁。MyHomePage(title: 'Flutter Demo Home Page') 。
);
}
}
class MyHomePage extends StatefulWidget{
MyHomePage({Key key, this.title}) : super(key: 密鑰)。
final String title。
@override
_MyHomePageState createState() => _MyHomePageState()。
}
class _MyHomePageState extends State< MyHomePage> {
ScrollController _scrollController = ScrollController()。
double hhhh = 30;
@override
void initState() {
super.initState()。
}
@override
Widget build(BuildContext context) {
WidgetsBinding.instance.addPostFrameCallback((duration) {
print("${_scrollController.position.maxScrollExtent}") 。
//span>如果可滾動,則列印為真,否則為假。
print(
"isScrollable = ${_scrollController.position.maxScrollExtent != 0}")。)
});
return Scaffold(
appBar: AppBar(
標題。Text(widget.title),
),
body: _buildBody()。
floatingActionButton: FloatingActionButton(
onPressed: () {
setState(() {
if (hhhhh == 30) {
hhhh = 3333;
} else {
hhhh = 30;
}
});
},
tooltip: 'Increment',
孩子。Icon(Icons.add)。
),
);
}
小工具 _buildBody() {
return ListView(
控制器。_scrollController,
兒童。[
Container(height: hhhh, child: Text('a'))。)
Container(height: 30, child: Text('a'))。
容器(高度。30, child: Text('a'))。
容器(高度。30, child: Text('a'))。
],
);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/315671.html
標籤:
