В моем приложении мне нужно предоставить функцию обновления на одном из экранов.Я выбрал 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),
),
),
),
],
),
),
);
}
}
Вот демонстрация проблемы:
ОБНОВЛЕНИЕ:
Ссылка на проблему , которую я создал в репозитории флаттера, проблема в самом CupertinoSliverRefreshControl
.На самом деле это не проблема, а ожидаемое поведение.Когда refreshState
элемента управления достигает inactive
, метод построения возвращает пустое значение Container
, которое по умолчанию составляет 10% от высоты элемента управления.Этот точный Container
виден на gif выше.
Я создал Запрос на извлечение , который добавляет параметр для управления этим Container
цветом, теперь ждет его слияния.