#flutter #listview #dart #flutter-web
#flutter #listview #dart #flutter-web
Вопрос:
Я использую StickyGroupedListView для разделения элементов listview по дате, в частности по неделям.
При прокрутке он случайным образом вылетает, когда разделитель появляется снизу, за исключением, которое я не совсем понимаю.
В списке около 25 элементов, если это имеет значение.
Я довольно новичок в Flutter, поэтому прошу прощения, если код неаккуратный.
Код StickyGroupedListView:
StickyGroupedListView<TransactionData, DateTime>(
elements: transactions,
order: StickyGroupedListOrder.ASC,
groupBy: (TransactionData transaction) =>
getStartOfWeek(transaction.date),
groupComparator: (DateTime value1, DateTime value2) =>
value2.compareTo(value1),
floatingHeader: true,
groupSeparatorBuilder: (TransactionData transaction) => Container(
height: 50,
margin: EdgeInsets.all(8),
child: Align(
alignment: Alignment.center,
child: Container(
width: 300,
decoration: BoxDecoration(
color: Color(0xff3447d4),
borderRadius: BorderRadius.all(Radius.circular(18.0)),
),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
'${getStartOfWeek(transaction.date).day}. ${getStartOfWeek(transaction.date).month}. ${getStartOfWeek(transaction.date).year}',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 20,
color: Colors.white,
),
),
),
),
),
),
itemBuilder: (_, TransactionData transaction) {
return Container(
margin: EdgeInsets.symmetric(horizontal: 25, vertical: 10),
child: Card(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
elevation: 6,
child: InkWell(
onTap: () {},
borderRadius: BorderRadius.circular(12),
child: Padding(
padding:
const EdgeInsets.symmetric(vertical: 10, horizontal: 15),
child: Row(
children: <Widget>[
Image.asset(setImage(transaction.buy)),
SizedBox(width: 10),
Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Text(
getTransactionTitle(transaction),
style: TextStyle(
color: Colors.black,
fontSize: 25.0,
fontWeight: FontWeight.bold,
),
),
Text(
DateFormat('dd.MM.yyyy').format(transaction.date),
style: TextStyle(
fontSize: 20.0,
color: Colors.grey.withOpacity(0.8),
),
),
],
),
Spacer(),
getTransactionAmountWidget(transaction), //function to return Widget based on transaction type
],
),
),
),
),
);
},
);
Исключение:
Assertion failed: org-dartlang-sdk:///flutter_web_sdk/lib/_engine/engine/html/picture.dart:54:10
canvas == null || !_recycledCanvases.contains(canvas)
is not true
When the exception was thrown, this was the stack:
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 231:49 throw_
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 24:3 assertFailed
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/html/picture.dart 54:62 _recycleCanvas
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/html/picture.dart 591:5 discard
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/html/surface.dart 802:14 _discardActiveChildren
...
====================================================================================================
======== Exception caught by scheduler library =====================================================
PersistedPhysicalShape: is in an unexpected state.
Expected one of: PersistedSurfaceState.active, PersistedSurfaceState.released
But was: PersistedSurfaceState.pendingRetention
====================================================================================================
Последнее исключение отображается несколько раз.
Комментарии:
1. есть какое-нибудь решение для этого?
2. Проблемы с флаттером По-видимому, это ошибка, к сожалению, я не смог найти решение.
3. хорошо, спасибо. в нем говорится, что это исправлено в master. mb это исправление еще не переведено в бета-версию
4. вы смогли это исправить?