Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 获取映射中存在的列表的长度<;字符串,列表<;对象>&燃气轮机;飘飘然_List_Flutter_Listview_Dart - Fatal编程技术网

List 获取映射中存在的列表的长度<;字符串,列表<;对象>&燃气轮机;飘飘然

List 获取映射中存在的列表的长度<;字符串,列表<;对象>&燃气轮机;飘飘然,list,flutter,listview,dart,List,Flutter,Listview,Dart,因此,我正在绘制一幅具有以下结构的地图: Map<String, List<Video>> mapName; 现在列表中确实有9个视频,但我不能在我的listview itemcount中使用它,因为它需要int类型的数据。如果地图的键字符串包含多个视频列表,则可以使用以下代码获得所有长度: Map<String, List<Video>> mapName = { 'video1': [Video(),Video()], 'video2'

因此,我正在绘制一幅具有以下结构的地图:

Map<String, List<Video>> mapName;

现在列表中确实有9个视频,但我不能在我的listview itemcount中使用它,因为它需要int类型的数据。

如果地图的键字符串包含多个视频列表,则可以使用以下代码获得所有长度:

Map<String, List<Video>> mapName = {
  'video1': [Video(),Video()],
  'video2': [Video()],
  'video3': [Video(),Video(),Video()],
}; //Init

int total = 0;
  
mapName.keys.forEach((key){
  List<Video> video = mapName[key];
  int length = video.length;
  print('$key: $length');
  total += length;
});
  
print('total: $total');
Map映射名={
“video1:[Video(),Video()],
“video2”:[Video()],
“video3”:[Video(),Video(),Video()],
}; //初始化
int-total=0;
mapName.keys.forEach((键){
列表视频=地图名称[键];
int length=video.length;
打印(“$key:$length”);
总长度+=长度;
});
打印('total:$total');

颤振示例:

import 'package:flutter/material.dart';

final Color darkBlue = Color.fromARGB(255, 18, 32, 47);

void main() {
  runApp(MyApp());
}

class Video {
  final String name;
  final String url;
  final bool isDone;

  Video(this.name, this.url, this.isDone);
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    Map<String, List<Video>> mapName = {
      'video1': [
        Video('Bunny', 'http://????', false),
        Video('Bunny10', 'http://????', true),
      ],
      'video2': [
        Video('Bunny2', 'http://????', false),
      ],
      'video3': [
        Video('BunnyX', 'http://????', false),
        Video('Bunny12', 'http://????', true),
        Video('BunnyZZ', 'http://????', false),
      ],
    }; //Init

    List<Video> mVideos = [];

    mapName.values.forEach((videos) {
      videos.forEach((video) {
        mVideos.add(video);
      });
    });

    return MaterialApp(
      theme: ThemeData.dark().copyWith(scaffoldBackgroundColor: darkBlue),
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        body: ListView.builder(
          itemCount: mVideos.length,
          itemBuilder: (context, index) {
            Video video = mVideos[index];

            String name = video.name;
            String url = video.url;
            bool isDone = video.isDone;

            return ListTile(
              tileColor: isDone ? Colors.green : null,
              title: Text(name),
              subtitle: Text(url),
            );
          },
        ),
      ),
    );
  }
}

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Text('Hello, World!', style: Theme.of(context).textTheme.headline4);
  }
}
导入“包装:颤振/材料.省道”;
最终颜色深蓝色=颜色。来自argb(255,18,32,47);
void main(){
runApp(MyApp());
}
课堂录像{
最后的字符串名;
最终字符串url;
最终布尔伊斯通;
视频(this.name、this.url、this.isDone);
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
地图名称={
“视频1”:[
视频('Bunny','http://?',false),
视频('Bunny10','http://?',true),
],
“视频2”:[
视频('Bunny2','http://',false),
],
“视频3”:[
视频('BunnyX','http://?',false),
视频('Bunny12','http://',true),
视频('bunnyz','http://',false),
],
};//初始化
列出mVideos=[];
mapName.values.forEach((视频){
视频。forEach((视频){
mVideos.add(视频);
});
});
返回材料PP(
主题:ThemeData.dark().copyWith(脚手架背景颜色:深蓝色),
debugShowCheckedModeBanner:false,
家:脚手架(
正文:ListView.builder(
itemCount:mVideos.length,
itemBuilder:(上下文,索引){
视频=mVideos[索引];
字符串名称=video.name;
字符串url=video.url;
bool isDone=video.isDone;
返回列表块(
tileColor:IsOne?颜色。绿色:空,
标题:文本(名称),
字幕:文本(url),
);
},
),
),
);
}
}
类MyWidget扩展了无状态Widget{
@凌驾
小部件构建(构建上下文){
返回文本('Hello,World!',样式:Theme.of(context.textTheme.headline4);
}
}

您希望通过此打印实现什么(videoList.values.map((list)=>list.length));答案中有颤振的例子
import 'package:flutter/material.dart';

final Color darkBlue = Color.fromARGB(255, 18, 32, 47);

void main() {
  runApp(MyApp());
}

class Video {
  final String name;
  final String url;
  final bool isDone;

  Video(this.name, this.url, this.isDone);
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    Map<String, List<Video>> mapName = {
      'video1': [
        Video('Bunny', 'http://????', false),
        Video('Bunny10', 'http://????', true),
      ],
      'video2': [
        Video('Bunny2', 'http://????', false),
      ],
      'video3': [
        Video('BunnyX', 'http://????', false),
        Video('Bunny12', 'http://????', true),
        Video('BunnyZZ', 'http://????', false),
      ],
    }; //Init

    List<Video> mVideos = [];

    mapName.values.forEach((videos) {
      videos.forEach((video) {
        mVideos.add(video);
      });
    });

    return MaterialApp(
      theme: ThemeData.dark().copyWith(scaffoldBackgroundColor: darkBlue),
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        body: ListView.builder(
          itemCount: mVideos.length,
          itemBuilder: (context, index) {
            Video video = mVideos[index];

            String name = video.name;
            String url = video.url;
            bool isDone = video.isDone;

            return ListTile(
              tileColor: isDone ? Colors.green : null,
              title: Text(name),
              subtitle: Text(url),
            );
          },
        ),
      ),
    );
  }
}

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Text('Hello, World!', style: Theme.of(context).textTheme.headline4);
  }
}