Pull to refresh

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,
            ),
          ),
        ),
      );
}

Если в приложении нет ни одного Scaffold, то никто не установит лисенер на тапы:

После закрытия попапов в меню, секунду или две не работают жесты и нажатия. А это как-то лечится на флаттере?

По поводу Memo. На айфоне такое есть

Да, есть такая проблема. Пока не разбирались, что-то с навигатором

Sign up to leave a comment.

Articles