我在 Dart 中有一个对象列表,我想对这些对象中的每一个执行异步操作。当所有异步操作完成后,我想执行最后一个操作。我目前正在使用如下代码执行此操作:
for (int i = 0; i < myObjectList.length; i++) {
await myAsynchronousOperation(myObjectList[i]);
}
doFinalOperation();
Run Code Online (Sandbox Code Playgroud)
虽然这在技术上可行,但我认为它效率低下,因为 for 循环将等待第一个异步操作完成后才开始第二个异步操作。因此,根据我的理解,我们最终会同步触发异步操作,这不可能是异步编程的意图。
因此,我的问题是,是否可以以某种方式立即触发所有异步操作,然后等到它们全部完成,然后最后执行最终操作。提前致谢!
flutter 有没有办法让 TextField 只接受大于零的数字?我目前只允许通过以下代码输入数字:
keyboardType: TextInputType.number,
inputFormatters: <TextInputFormatter>[FilteringTextInputFormatter.digitsOnly],
Run Code Online (Sandbox Code Playgroud)
现在我想防止 TextField 的值为零,同时通常仍然允许输入零。因此,允许输入100并阻止输入001。
我不想通过监听输入更改然后手动擦除零或通过类似的方法来实现此目的。我正在寻找一个内置的解决方案。
我刚刚更新到 Gradle 7.0.4,在构建时我现在收到错误。
A problem occurred evaluating project ':app'.
No signature of method: build_9gq7rvxos4tcg7upa17qqy1oj.android() is applicable for argument types: (build_9gq7rvxos4tcg7upa17qqy1oj$_run_closure3) values: [build_9gq7rvxos4tcg7upa17qqy1oj$_run_closure3@558fca1c]
Run Code Online (Sandbox Code Playgroud)
由于错误指向我的 app/build.gradle 中的 android{} 标记,我尝试注释掉 android{} 标记的不同部分。我通过注释掉 Proguard 成功地消除了错误:
android {
/* More code */
buildTypes {
release {
signingConfig signingConfigs.release
// These lines seem to have caused the error:
// minifyEnabled true
// useProguard true
// proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我仍然想使用混淆器,所以我的问题是我必须在代码中更改什么才能实现这一点。
flutter ×2
android ×1
async-await ×1
asynchronous ×1
dart ×1
for-await ×1
for-loop ×1
gradle ×1
proguard ×1
textfield ×1