Flutter carousel_slider 4.0.0 тип ошибки 'Null' не является подтипом типа 'List <int>' в приведении типов

Я использую свое приложение flutter (версия с нулевой безопасностью) для 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(),
                ),);

  }

}

3 ответа

Решение

Эта ошибка может указывать на то, что что-то в вашем imageListнулевой. В CarouselSlider требует ненулевых параметров для ключей / значений в своих items атрибут.

Ваша вторая ссылка:https://lh3.googleusercontent.com/proxy/yL2FmQfZA79S5eIDza9MH2NjKGIKWPOGRHxHdYwiNPcYDW26YmK6qnP01ZDLsBENZpiADc1ohkj3LzVjrwoX8Pb-crT6MYZb3Jp9gy3ZrlET_yvoFS0qtUHLq4DtVPcqIdxPiNWI_j08omBVACv-YJc

возвращает 404, а не изображение.

получить еще один

Попался в ту же проблему. Хотя удаление плохой ссылки решает проблему, это не предотвращает ее повторное возникновение без ручного вмешательства. Итак, я закончил тем, что написал небольшой фрагмент кода, который по существу очищает imageList перед передачей его в Carousel Slider. Вот соответствующий фрагмент:

      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 в свойстве items: слайдера Carousel

Примечание: так как это будущее, вы можете получить сообщение об ошибке null в консоли, но вы не увидите "пустое" изображение в слайдере карусели.

Другие вопросы по тегам