frosty/lib/widgets/animated_scroll_border.dart
Tommy Chow f68de827cd
Refresh themes and styling (#394)
* consolidate themes

* update and tweak styles, add border styling

* add borders between video and chat

* tweak heights

* improve reply threads
- taller new design
- can now tap parent's reply
- fix crash when tapping self

* tweak border colors

* tweak theme

* tweak theme

* tweak theme

* add accent color picker in settings

* overhaul colors and styles

* remove print

* add divider to chat user modal and revert height

* increase deleted message opacity

* revert highlight color

* tweak color

* tweak colors

* tweak padding

* tweak padding

* tweak placeholder color

* revert input fill color

* use error color
2024-09-06 21:43:27 -07:00

50 lines
1.1 KiB
Dart

import 'package:flutter/material.dart';
class AnimatedScrollBorder extends StatefulWidget {
final ScrollController scrollController;
const AnimatedScrollBorder({
super.key,
required this.scrollController,
});
@override
State<AnimatedScrollBorder> createState() => _AnimatedScrollBorderState();
}
class _AnimatedScrollBorderState extends State<AnimatedScrollBorder> {
bool _isScrolled = false;
@override
void initState() {
super.initState();
widget.scrollController.addListener(_updateScrollState);
}
@override
void dispose() {
widget.scrollController.removeListener(_updateScrollState);
super.dispose();
}
void _updateScrollState() {
setState(() {
_isScrolled = widget.scrollController.offset > 0;
});
}
@override
Widget build(BuildContext context) {
return AnimatedSwitcher(
switchInCurve: Curves.easeOut,
switchOutCurve: Curves.easeIn,
duration: const Duration(milliseconds: 200),
child: _isScrolled
? const Divider()
: Divider(
key: ValueKey(_isScrolled),
color: Colors.transparent,
),
);
}
}