[英]The getter 'key' was called on null while using Carousel on latest version of flutter
將 flutter 更新到最新版本后,我在Carousel
上遇到了這個異常。 Carousel
在 flutter 版本 1.22.4 上運行良好。 但是在切換到最新版本(2.0.3)時,我得到了這個例外。 下面是代碼和異常。 我正在使用以下 package https://pub.dev/packages/carousel_pro
例外
════════ 渲染庫捕獲的異常══════════════════════════════S═下面的方法是═══S═在 performLayout() 期間拋出:在 null 上調用了 getter 'key'。 接收方:null 嘗試呼叫:key
The relevant error-causing widget was Carousel lib\…\homeViews\homeAppBarDelegate.dart:39 When the exception was thrown, this was the stack #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:54:5) # 1 SliverChildListDelegate.build package:flutter/…/widgets/sliver.dart:722 #2 SliverMultiBoxAdaptorElement._build package:flutter/…/widgets/sliver.dart:1201 #3 SliverMultiBoxAdaptorElement.createChild. package:flutter/…/widgets/sliver.dart:1214 #4 BuildOwner.buildScope package:flutter/…/widgets/framework.dart:2647... The following RenderObject was being processed when the exception was fired: RenderSliverFillViewport#4a87d relayoutBoundary =up2 NEEDS-LAYOUT NEEDS-PAINT RenderObject: RenderSliverFillViewport#4a87d relayoutBoundary=up2 NEEDS-LAYOUT NEEDS-PAINT parentData: paintOffset=Offset(0.0, 0.0) (可以使用大小) 約束: SliverConstraints(AxisDirection.right, GrowthDirection.forward, ScrollDirection 。 ══════════════════════════════════════════════════ ════════════════════
代碼
class HomeView extends StatefulWidget {
@override
_HomeViewState createState() => _HomeViewState();
}
class _HomeViewState extends State<HomeView> {
@override
Widget build(BuildContext context) {
return Scaffold(
...................
Stack(
children: [
CustomScrollView(
controller: _scrollController,
slivers: <Widget>[
SliverPersistentHeader(
delegate: HomeAppBarDelegate(
maxExtent: 230,
minExtent: 50,
),
pinned: true,
floating: false,
),
],
),
],
),
),
},
}
import 'package:carousel_pro/carousel_pro.dart';
class HomeAppBarDelegate extends SliverPersistentHeaderDelegate {
@override
Widget build(
BuildContext context, double shrinkOffset, bool overlapsContent) {
return Stack(
children: [
...................
// ------------------------------ C O V E R B L U R I M A G E S
Carousel(
animationCurve: Curves.easeInOutQuint,
animationDuration: Duration(seconds: 1),
dotBgColor: Colors.transparent,
overlayShadow: true,
autoplayDuration: Duration(seconds: 4),
showIndicator: false,
dotIncreasedColor: Colors.brown,
onImageChange: (prevInd, currInd) => coverImgIndex = currInd,
images: [
...coverImagesList.map(
(singleImg) => HomeBlurCoverImg(
imgURl: singleImg,
animationVal: animationVal,
maxExtent: maxExtent,
sizingInformation: sizingInformation,
),
),
],
),
],
),
獲取空白屏幕
錯誤是說geometry: null no children current live
。 你的小部件沒有收到任何孩子,你能確認這不是問題嗎? 在運行小部件之前填充您的項目,或者在渲染之前使用isNotEmpty
檢查,這應該可以解決您的問題。 特別coverImagesList
,我看不到你在哪里傳遞這個列表的值或者你的小部件樹從哪里得到它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.