1

Carousel将颤振更新到最新版本后,我遇到了这个异常。Carousel在颤振版本 1.22.4 上运行良好。但是在切换到最新版本(2.0.3)时,我得到了这个例外。下面是代码和异常。我正在使用以下包 https://pub.dev/packages/carousel_pro

例外

════════ 渲染库捕获的异常══════════════════════════════S═下面的方法是═══S═错误在 performLayout() 期间抛出:在 null 上调用了 getter 'key'。接收者:null 尝试调用:key

相关的导致错误的小部件是 Carousel lib\...\homeViews\homeAppBarDelegate.dart:39 当抛出异常时,这是堆栈 #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:54:5) # 1 SliverChildListDelegate.build 包:flutter/…/widgets/sliver.dart:722 #2 SliverMultiBoxAdaptorElement._build 包:flutter/…/widgets/sliver.dart:1201 #3 SliverMultiBoxAdaptorElement.createChild。package:flutter/…/widgets/sliver.dart:1214 #4 BuildOwner.buildScope package:flutter/…/widgets/framework.dart:2647 ... 引发异常时正在处理以下 RenderObject:RenderSliv​​erFillViewport#4a87d relayoutBoundary =up2 NEEDS-LAYOUT NEEDS-PAINT RenderObject:RenderSliv​​erFillViewport#4a87d relayoutBoundary=up2 NEEDS-LAYOUT NEEDS-PAINT parentData:paintOffset=Offset(0.0, 0.

代码

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,
                      ),
                    ),
                  ],
                ),
              ],
            ),

获取空白屏幕

在此处输入图像描述

4

1 回答 1

1

错误是说geometry: null no children current live。你的小部件没有收到任何孩子,你能确认这不是问题吗?在运行小部件之前填充您的项目,或者isNotEmpty在渲染它之前检查使用,这应该可以解决您的问题。具体来说coverImagesList,我看不到你在哪里传递这个列表的值或者你的小部件树从哪里得到它。

于 2021-03-21T07:52:08.900 回答