Comments 12
Какие-то проблемы на ровном месте. Стандартый UIScrollView реализует эту возможность, а коллекции (UITableView, UICollectionView) наследуются от UIScrollView. Что касается подскраливаний, то логику для них можно дописать в делегата UIScrollView и все будет ок.
Issue на Flutter к этой статье тут
В реальных проектах нам иногда нужно иметь свой ScrollController для подскролов к элементам списка.
Для этих целей можно использовать тот же PrimaryScrollController
Будет ли это тап в статус бар работать, если у нас будет несколько вложенных Scaffold?
Но не будет работать если я использую не Scaffold
а CupertinoPageScaffold
или что кастомное
/// Primary scaffold of your app
final Scaffold scaffold;
И как следствие — не универсальное решение (то есть нельзя передать Widget
) которое называется scrolls_to_top
, а должно примерно так scrolls_to_top_primary_scaffold
Спасибо за ссылку на issue!
По поводу передачи Scaffold
внутрь ScrollsToTop
виджета - поправил статью, там был неверный код. Хорошо, что вы заметили. Можно использовать любой виджет:
/// Widget for catch scrolls-to-top event
class ScrollsToTop extends StatefulWidget {
/// Creates new ScrollsToTop widget
const ScrollsToTop({
Key? key,
required this.child,
required this.onScrollsToTop,
}) : super(key: key);
/// Any child widget
final Widget child;
/// Callback for handle scrolls-to-top event
final ScrollsToTopCallback onScrollsToTop;
@override
State<ScrollsToTop> createState() => _ScrollsToTopState();
}
Это не отменяет того, что либа не работает (по идее должен произойти принт в консоль, но его нету)
import 'package:flutter/material.dart';
import 'package:scrolls_to_top/scrolls_to_top.dart';
void main() => runApp(const _Root());
class _Root extends StatelessWidget {
const _Root({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) => const MaterialApp(
home: _Screen(),
);
}
class _Screen extends StatelessWidget {
const _Screen({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) => ScrollsToTop(
onScrollsToTop: (event) async {
print(event);
},
child: ListView.builder(
itemBuilder: (context, index) => const ColoredBox(
color: Colors.red,
child: SizedBox(
height: 100,
),
),
),
);
}
Мама, я в телевизоре!
Прикольная статья, спасибо
После закрытия попапов в меню, секунду или две не работают жесты и нажатия. А это как-то лечится на флаттере?
Тап в статус бар. Делаем простое сложно c помощью Flutter