如何在Flutter中删除仅在一端滚动的光晕



我只想删除顶部的滚动发光效果。我用"滚动配置"包装了我的小部件,但它去掉了两端的光晕。我只需要底部发光。我怎样才能做到这一点?

这是我的代码,

class Body extends StatelessWidget {
const Body({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
final daySubData = Provider.of<DaySubjects>(context);
List<DaySubject> subList;
switch (DateTime.now().weekday) {
case 1:
subList = daySubData.monSub;
break;
case 2:
subList = daySubData.tueSub;
break;
case 3:
subList = daySubData.wedSub;
break;
case 4:
subList = daySubData.thuSub;
break;
case 5:
subList = daySubData.friSub;
break;
case 6:
subList = daySubData.satSub;
break;
case 7:
subList = daySubData.sunSub;
break;
}
return ScrollConfiguration(
behavior: MyBehavior(),
child: ListView.builder(
itemCount: subList.length,
itemBuilder: (context, index) => Column(
children: [
SubjectTile(subList[index]),
// if (index != subList.length - 1) Divider(),
],
),
),
);
}
}
class MyBehavior extends ScrollBehavior {
@override
Widget buildViewportChrome(BuildContext context, Widget child, AxisDirection axisDirection) {
return child;
}
}

作为一个选项,您可以将滚动视图包装到NotificationListener 中

import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(body: SafeArea(child: Content())),
);
}
}
class Content extends StatelessWidget {
@override
Widget build(BuildContext context) {
return NotificationListener<OverscrollIndicatorNotification>(
onNotification: (n) {
if (n.leading) n.disallowGlow();
return true;
},
child: ListView.separated(
itemCount: 15,
separatorBuilder: (_, __) => const Divider(),
itemBuilder: (context, i) {
return Container(height: 64, alignment: Alignment.centerLeft, child: Text('ITEM $i'));
},
),
);
}
}

尝试一下:

final _controller = ScrollController();
bool _flag = true;

@override
void initState() {
super.initState();
_controller.addListener(() {
_flag = _controller.offset > 10;
});
}

@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView(
controller: _controller,
physics: _flag ? ClampingScrollPhysics() : BouncingScrollPhysics(),
),
);
}

最新更新