Flutter 中的“由手势引起的异常”错误

时间:2021-04-17 14:50:41

标签: flutter dart flutter-layout flutter-dependencies flutter-test

嗨,当我在 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 上进行实时共享会话以讨论整个代码。 尊重++;

1 个答案:

答案 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();