mirror of
https://gitlab.com/famedly/fluffychat.git
synced 2025-01-26 20:14:28 +01:00
perf: Use valuenotifier to not rebuild chatlist
This commit is contained in:
parent
623c3bfc2e
commit
b0a58d8524
@ -253,7 +253,7 @@ class ChatListController extends State<ChatList>
|
|||||||
BoxConstraints? snappingSheetContainerSize;
|
BoxConstraints? snappingSheetContainerSize;
|
||||||
|
|
||||||
final ScrollController scrollController = ScrollController();
|
final ScrollController scrollController = ScrollController();
|
||||||
bool scrolledToTop = true;
|
final ValueNotifier<bool> scrolledToTop = ValueNotifier(true);
|
||||||
|
|
||||||
final StreamController<Client> _clientStream = StreamController.broadcast();
|
final StreamController<Client> _clientStream = StreamController.broadcast();
|
||||||
|
|
||||||
@ -263,10 +263,8 @@ class ChatListController extends State<ChatList>
|
|||||||
|
|
||||||
void _onScroll() {
|
void _onScroll() {
|
||||||
final newScrolledToTop = scrollController.position.pixels <= 0;
|
final newScrolledToTop = scrollController.position.pixels <= 0;
|
||||||
if (newScrolledToTop != scrolledToTop) {
|
if (newScrolledToTop != scrolledToTop.value) {
|
||||||
setState(() {
|
scrolledToTop.value = newScrolledToTop;
|
||||||
scrolledToTop = newScrolledToTop;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ import 'chat_list.dart';
|
|||||||
|
|
||||||
class StartChatFloatingActionButton extends StatelessWidget {
|
class StartChatFloatingActionButton extends StatelessWidget {
|
||||||
final ActiveFilter activeFilter;
|
final ActiveFilter activeFilter;
|
||||||
final bool scrolledToTop;
|
final ValueNotifier<bool> scrolledToTop;
|
||||||
final bool roomsIsEmpty;
|
final bool roomsIsEmpty;
|
||||||
|
|
||||||
const StartChatFloatingActionButton({
|
const StartChatFloatingActionButton({
|
||||||
@ -61,7 +61,9 @@ class StartChatFloatingActionButton extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return AnimatedContainer(
|
return ValueListenableBuilder<bool>(
|
||||||
|
valueListenable: scrolledToTop,
|
||||||
|
builder: (context, scrolledToTop, _) => AnimatedContainer(
|
||||||
duration: FluffyThemes.animationDuration,
|
duration: FluffyThemes.animationDuration,
|
||||||
curve: FluffyThemes.animationCurve,
|
curve: FluffyThemes.animationCurve,
|
||||||
width: roomsIsEmpty
|
width: roomsIsEmpty
|
||||||
@ -82,6 +84,7 @@ class StartChatFloatingActionButton extends StatelessWidget {
|
|||||||
onPressed: () => _onPressed(context),
|
onPressed: () => _onPressed(context),
|
||||||
child: Icon(icon),
|
child: Icon(icon),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user