【问题标题】:Flutter carousel_slider 4.0.0 error type 'Null' is not a subtype of type 'List<int>' in type castFlutter carousel_slider 4.0.0 错误类型“Null”不是类型转换中“List<int>”类型的子类型
【发布时间】:2021-09-25 10:47:07
【问题描述】:

我正在为 carousel_slider 4.0.0 使用我的颤振(空安全版本)应用程序,滑块工作但我遇到了这个错误

类型“Null”不是类型转换中“List”类型的子类型

有什么解决办法吗?

我的代码在这里

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:flutter_svg/svg.dart';
import 'package:carousel_slider/carousel_slider.dart';
import 'package:rmapp/provider/theme_provider.dart';

class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  //swiper current index

  late final List<String> imageList = [
    "https://www.setaswall.com/wp-content/uploads/2018/08/Spiderman-Wallpaper-76-1280x720.jpg",
    "https://lh3.googleusercontent.com/proxy/yL2FmQfZA79S5eIDza9MH2NjKGIKWPOGRHxHdYwiNPcYDW26YmK6qnP01ZDLsBENZpiADc1ohkj3LzVjrwoX8Pb-crT6MYZb3Jp9gy3ZrlET_yvoFS0qtUHLq4DtVPcqIdxPiNWI_j08omBVACv-YJc",

  ];
  @override
  Widget build(BuildContext context) {
    Provider.of<ThemeProvider>(context).themeMode == ThemeMode.dark
        ? 'DarkTheme'
        : 'LightTheme';
    return Scaffold(
      // Setting up AppBar
      appBar: AppBar(
        automaticallyImplyLeading: false,
        iconTheme: Theme.of(context).iconTheme,

       

      ),

      // Setting up Background Color


      // Body
      body: Container(
        child: ListView(
          physics: ClampingScrollPhysics(),
          children: <Widget>[

            Padding(
              padding: EdgeInsets.only(left: 16, bottom: 10, top: 10,),
              child: Text(
                'Hi, Welcome back!',
                //style: mTitleStyle,
              ),
            ),
            //Promo Slider
            _promoSlider(),

          ],
        ),
      ),
    );
  }


  //Promo Slider
  Widget _promoSlider() {
    return Container(



            child: CarouselSlider(
              options: CarouselOptions(
                enlargeCenterPage: true,
                enableInfiniteScroll: false,
                autoPlay: true,
              ),
              items: imageList.map((e) => ClipRRect(
                borderRadius: BorderRadius.circular(8),
                child: Stack(
                  fit: StackFit.expand,
                  children: <Widget>[
                    Image.network(e,
                      width: 1050,
                      height: 350,
                      fit: BoxFit.cover,)
                  ],
                ) ,
              )).toList(),
                ),);

  }

}

【问题讨论】:

  • 也许您可以尝试对导致错误的列表添加空检查
  • @Cyrill 不清楚,能否请您添加解决方案
  • 您可以尝试用具体的小部件列表替换项目吗?像 var list = []; for (var i = 0; i
  • 我会假设您的 imageList 中的某些内容为空。你能确认不是吗?
  • 为了完整起见,我会提交一个答案,以防其他人偶然发现类似的错误/情况。当赏金到期时,请随意接受它,因为我猜我并没有真正做任何事情:)

标签: flutter carousel-slider


【解决方案1】:

此错误可能表明您的 imageList 中的某些内容为空。 CarouselSlider 在其items 属性中需要非空参数用于键/值目的。

【讨论】:

    【解决方案2】:
    【解决方案3】:

    遇到了同样的问题。虽然删除坏链接可以解决问题,但它并不能防止问题在没有人工干预的情况下再次发生。 所以我最终写了一小段代码,在将它传递给 Carousel Slider 之前基本上清理了 imageList。这是相关的sn-p:

    import 'package:http/http.dart' as http;
    
    Future<bool> photoExists(String photourl) async {
            final response = await http.get(Uri.parse(photourl));
            if (response.statusCode == 200) {
              return true;
            } else {
              return false;
            }
          }
    
    List imageList = original_imageList;  // replace original_imageList with the appropriate list of urls
        for (String singleImage in imageList) {
          photoExists(singleImage).then((value) {
            if (!value) {
              imageList.remove(singleImage);
            }
          });
        } 
    

    现在您可以在项目中使用 imageList:Carousel Slider 的属性

    注意:由于这是未来,您可能会在控制台中收到 null 错误消息,但您不会在 Carousel Slider 中看到“null”图像

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-06
      • 2022-01-19
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 2022-12-03
      相关资源
      最近更新 更多