飞镖-类型“ List <int>”不是“函数结果”的类型“ List <List <int >>”的子类型

时间:2019-12-21 09:34:08

标签: flutter dart

我正在尝试生成ID为0-63的8x8网格。

这是我的木板的数据:

final List<List<int>> ids = [
  List.generate(8, (i) => i), // 0 - 7
  List.generate(8, (i) => i + 1 + 7), // 8 - 15
  List.generate(8, (i) => i + 2 + 14), // 16 - 23
  List.generate(8, (i) => i + 3 + 21 ), // 24 - 31
  List.generate(8, (i) => i + 4 + 28), // 32 - 39
  List.generate(8, (i) => i + 5 + 35), // 40 - 47
  List.generate(8, (i) => i + 6 + 42), // 48 - 55
  List.generate(8, (i) => i + 7 + 49) // 56 - 63
];

这是迭代数据以创建电路板的功能:

List<Row> buildBoard() {

  return ids.map((row) {

    return Row(
      children: row.map((id) {

        return Expanded(
          child: () {
            /* ... omitted for readability ... */
          }()
        );
      }).toList()
    );
  }).toList();
}

我没有收到任何皮棉错误,但是当我在这里运行代码时:

@override
Widget build(BuildContext context) {
  return Column(
    children: buildBoard()
  );
}

我收到以下错误:

type 'List<int>' is not a subtype of type 'List<List<int>>' of 'function result'

我不知道为什么会这样,尝试寻找其他答案但没有成功。

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

我无法重现该问题。对我有好处

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      home: Scaffold(
        body: FirstPage(),
      ),
    );
  }
}

class FirstPage extends StatelessWidget {
  final List<List<int>> ids = [
    List.generate(8, (i) => i), // 0 - 7
    List.generate(8, (i) => i + 1 + 7), // 8 - 15
    List.generate(8, (i) => i + 2 + 14), // 16 - 23
    List.generate(8, (i) => i + 3 + 21), // 24 - 31
    List.generate(8, (i) => i + 4 + 28), // 32 - 39
    List.generate(8, (i) => i + 5 + 35), // 40 - 47
    List.generate(8, (i) => i + 6 + 42), // 48 - 55
    List.generate(8, (i) => i + 7 + 49) // 56 - 63
  ];

  List<Row> buildBoard() {
    return ids.map((row) {
      return Row(
          children: row.map((id) {
        return Expanded(
          child: Material(
            child: Text("id_$id"),
          ),
        );
      }).toList());
    }).toList();
  }

  @override
  Widget build(BuildContext context) {
    return Column(
        children: buildBoard()
    );
  }
}