在DartPad中使用list.map赋值List<int>时触发类型错误,求排查
Hey there! Let's break down exactly why your Dart code is throwing that type mismatch error in DartPad.
The Root Cause
The problem boils down to what the map() method actually returns. When you call list.map((x) => x * x) on a List<int>, Dart doesn't hand you another List<int> immediately. Instead, it gives you a MappedListIterable<int, int>—a lazy iterator that only calculates the transformed values when you actually iterate over it (like calling forEach or accessing individual elements).
Your code tries to assign this iterator directly to a variable declared as List<int>:
void main() { List<int> list = [10, 20, 30]; List<int> squares = list.map((x) => x * x); // ❌ Type mismatch happens here squares.forEach((x) => print(x)); }
Dart's strict type system won't allow this implicit conversion, hence the TypeError you're seeing.
Two Simple Fixes
1. Convert the Iterator to a List Explicitly
Use the toList() method to turn the MappedListIterable into a proper List<int> that matches your variable's type:
void main() { List<int> list = [10, 20, 30]; List<int> squares = list.map((x) => x * x).toList(); // ✅ Explicit conversion squares.forEach((x) => print(x)); }
This immediately computes all squared values and stores them in a concrete list, which you can use like any other List<int>.
2. Skip the List Assignment (If You Don't Need It)
If your only goal is to print the squared values, you don't even need to store the result as a list. You can call forEach directly on the iterator returned by map()—this is also more memory-efficient, since it avoids creating an extra list:
void main() { List<int> list = [10, 20, 30]; list.map((x) => x * x).forEach((x) => print(x)); // ✅ Use iterator directly }
Quick Recap
Dart's map() is designed to be lazy—it doesn't generate the full list upfront. If you need a concrete List, you have to explicitly convert it with toList(). Otherwise, you can work directly with the iterator it returns to avoid unnecessary memory usage.
内容的提问来源于stack exchange,提问作者Unnikrishnan

