我正在使用 StickyGroupedListView 按日期(特别是按周)分隔列表视图项。
滚动时,当分隔符从底部出现时,它会随机崩溃,但我不太明白。
如果重要的话,该列表有大约 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
====================================================================================================
最后一个例外被多次列出。