type 'List<FlashcardsList>' 不是 type 'List<Back>' 的子类型如何解决这个问题?

type 'List<FlashcardsList>' is not a subtype of type 'List<Back>' how to fix this?

你好,我只是想问一下,因为我不知道这是什么意思?我的目标是制作一张可以在正面和背面的卡片上发出声音的卡片。我将 flutter 中的列表文件更改为我认为我知道的方式。我将 Back class 扩展到 FlashcardList class。并且我添加了一张我的背影列表 class 作为背影,我把我的背影改成了背影 class.

的列表

这是我的代码:

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:carousel_slider/carousel_slider.dart';
import 'package:assets_audio_player/assets_audio_player.dart';
import 'package:baybay_app/FlashCards/FlashcardsList.dart';
import 'package:flip_card/flip_card.dart';

class Flashcards extends StatefulWidget {
  final List<FlashcardsList> _flashCardsList = flashcardsList;
  final List<Back>_back = back;
  @override
  _FlashcardsState createState() => _FlashcardsState();
}

class _FlashcardsState extends State<Flashcards> {
  GlobalKey<FlipCardState> cardKey = GlobalKey<FlipCardState>();
  CarouselController buttonCarouselController = CarouselController();
  List<FlashcardsList> flashCardsList;
  List<Back> back;
  @override
  void initState() {
    super.initState();
    flashCardsList = widget._flashCardsList;
    back = widget._back;
  }Widget build(BuildContext context) => Scaffold(
    appBar: AppBar(title: Text('Sample Carousel')),
    body: Column(children: <Widget>[
      CarouselSlider.builder(
        itemBuilder: (context, index) {
          return     FlipCard(
                  front: ListTile(
                    onLongPress: () {
                      onPlayAudio(index);
                    },
                    title: Container(
                      child: Image(
                          image: AssetImage(
                              widget._flashCardsList[index].pictures1)),
                    ),

                  ),
                  back: ListTile(
                      title: Container(
                        child: Image(
                            image: AssetImage(
                                widget._back[index].pictures1)),
                      ),
                    ),


          );
        },
        itemCount: widget._flashCardsList.length,
        options: CarouselOptions(
          autoPlay: false,
          enlargeCenterPage: true,
          viewportFraction: 0.9,

          initialPage: 2,
        ),
      ),
    ]),
  );
  void onPlayAudio(index) async{
    AssetsAudioPlayer assetsAudioPlayer = AssetsAudioPlayer();
    assetsAudioPlayer.open(
        Audio(widget._flashCardsList[index].sound1)
    );
  }
  void PlayAudio(index) async{
    AssetsAudioPlayer assetsAudioPlayer = AssetsAudioPlayer();
    assetsAudioPlayer.open(
        Audio(widget._flashCardsList[index].sound2)
    );
  }
}

这是我的列表文件:

import 'package:assets_audio_player/assets_audio_player.dart';
class FlashcardsList{
  final String pictures1;
  final String name;
  final String sound1;
  final String pictures2;
  final String sound2;
  FlashcardsList({
    this.pictures1,
    this.name,
    this.sound1,
    this.pictures2,
    this.sound2
  });
// ignore: empty_constructor_bodies
}

final flashcardsList = [
  FlashcardsList(
    pictures1: 'assets/Ba.PNG',
    name: 'Ba',
    sound1: 'audioAssets/Ba.mp3',

  ),
  FlashcardsList(
    pictures1: 'assets/KA.PNG',
    name: 'Ka',
    sound1: 'audioAssets/Ka.mp3',

  ),
  FlashcardsList(
      pictures1: 'assets/KA.PNG',
      name: 'Ka',
      sound1: 'audioAssets/Ka.mp3',

  )

];

FlashcardsList instance = FlashcardsList(pictures1:'assets/Ba,PNG', name: 'Ba', sound1:'assets/Think of Me Instrumental (1).mp3');

class Back extends FlashcardsList{
  String picture2;
  String Sound2;
  Back({
    this.picture2,
    this.Sound2
  });
}

final back = [
  FlashcardsList(pictures1: 'assets/A.PNG',
      sound1: 'audioAssets/La.mp3'),

];

顺便说一句,我是 flutter 的新手。谢谢,请帮助我!

突出显示引发错误的行始终是一个好习惯

该错误消息意味着您将 (class) FlashcardList 类型的列表(数组)分配给需要返回类型列表的对象。所以你必须处理类型不匹配

问题出在你的列表文件的这部分代码中:

final back = [
  FlashcardsList(pictures1: 'assets/A.PNG',
      sound1: 'audioAssets/La.mp3'),
];

您正在将一个 Flashcard 类型的项目分配给您指定的背面数组,该数组应该是一个 Back 类型的项目数组。 将抽认卡更改为返回即可解决问题。