嗨,当我在 Flutter 应用程序中运行“onChanged”时出现异常错误。 (素材按钮)
════════ Exception caught by gesture ═══════════════════════════════════════════
type '(dynamic) => dynamic' is not a subtype of type '(dynamic) => Iterable<dynamic>' of 'f'
编辑: 下面的这个函数正在产生这些问题,因为代码很大,我向你展示了它发生的地方,我还引用了我的调试器为此错误引用的行。-
TextEditingController emojiSlideshow = new TextEditingController();
var todoText;
var ofTodoText;
var charecters;
var finalTodoEmoji;
// final var rawtodoEmoji;
// final var todoEmoji;
var finaltodoEmoji;
var finalTodoEmojiList;
var totalEmojis;
var currentEmoji;
void emojiRecommender() async {
await Future<void>.delayed(Duration(seconds: 1));
todoText = emojiSlideshow.text;
print(todoText); //What You need to Translate;
ofTodoText =
todoText.split(' '); //Splits texts to Invidually Translate a word
charecters = ofTodoText
.length; // int, the number of charectoers or words in todoText
finaltodoEmoji = [];
for (int i = 0; i < charecters;) {
//for loop
final rawtodoEmoji =
Emoji.byKeyword(ofTodoText[i]); //It gives all emoji as output
final todoEmoji = rawtodoEmoji
.take(7)
.toList(); // this Compresses each set of emoji to Three (limits)
// print(todoEmoji); // prints those Three Emoji
finaltodoEmoji.add(todoEmoji);
finaltodoEmoji.shuffle();
i++; //Counter increments.
}
<块引用>
finalTodoEmojiList = finaltodoEmoji.expand((x) => x).toList();
//print(finalTodoEmojiList);
//Print each Emoji in One Second
//
totalEmojis = finalTodoEmojiList.length;
for (var i = 0; i < totalEmojis; i++) {
currentEmoji = finalTodoEmojiList[i];
print(currentEmoji);
sleep(Duration(seconds: 1, milliseconds: 2));
}
setState(() {});
}
如果您无法理解此代码,您可以要求我在 VScode 上进行实时共享会话以讨论整个代码。 尊重++;
答案 0 :(得分:1)
问题在于您并没有真正在适用于 List 的 expand 函数中传递正确的参数。
示例: 您必须在 expand 内返回可迭代对象
var input = [1, 2, 3];
var duplicated = input.expand((i) => **[i, i]**).toList();
print(duplicated); // => [1, 1, 2, 2, 3, 3]
但是,在您的情况下,您只是返回一个不是 expand 工作方式的值。您至少可以进行以下更正以使您的代码正常工作。
finalTodoEmojiList = finaltodoEmoji.expand((x) => [x]).toList();