CupertinoSliverRefreshControl иногда мигает, когда контейнер возвращается из компоновщика - PullRequest
0 голосов
/ 22 января 2019

В моем приложении мне нужно предоставить функцию обновления на одном из экранов.Я выбрал CupertinoSliverRefreshControl.Основной цвет приложения - красный, поэтому панель навигации и панель поиска окрашены вместе с ним.А также контроль обновления должен быть окрашен в красный цвет.Но когда я возвращаю Контейнер с цветом из CupertinoSliverRefreshControl метода, весь элемент управления мигает белой полосой, когда достигает нулевой позиции после завершения onRefresh.

Структура виджета следующая:

import 'package:flutter/cupertino.dart';

void main() {
  runApp(App());
}

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return CupertinoApp(
      home: CupertinoPageScaffold(
        child: CustomScrollView(
          slivers: <Widget>[
            /// navbar
            CupertinoSliverNavigationBar(
              backgroundColor: Color(0xffe30613),
              largeTitle: Text(
                'App',
                style: TextStyle(
                  color: Color(0xffffffff),
                ),
              ),
            ),

            /// pull to refresh control
            CupertinoSliverRefreshControl(
              onRefresh: () => Future.delayed(Duration(milliseconds: 1000)),
              builder: (_, __, ___, ____, _____) {
                return Container(
                  color: Color(0xffe30613),
                  child: Center(
                    child: const CupertinoActivityIndicator(
                      radius: 12.0,
                    ),
                  ),
                );
              },
            ),

            /// searchbar
            SliverToBoxAdapter(
              child: Container(
                height: 56.0,
                padding: const EdgeInsets.symmetric(
                  horizontal: 8.0,
                  vertical: 10.0,
                ),
                color: Color(0xffe30613),
                child: Container(
                  color: Color(0xffffffff),
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

Вот демонстрация проблемы:

demonstration

ОБНОВЛЕНИЕ:

Ссылка на проблему , которую я создал в репозитории флаттера, проблема в самом CupertinoSliverRefreshControl.На самом деле это не проблема, а ожидаемое поведение.Когда refreshState элемента управления достигает inactive, метод построения возвращает пустое значение Container, которое по умолчанию составляет 10% от высоты элемента управления.Этот точный Container виден на gif выше.

Я создал Запрос на извлечение , который добавляет параметр для управления этим Container цветом, теперь ждет его слияния.

...