我是 Flutter 的新手,我正在尝试使用 Dialog 接收数据。当单击 textField 时,会出现 image2 的错误...

show(BuildContext context){
var dialog = Dialog(
child: Container(
margin: EdgeInsets.all(8.0),
child: Form(
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
TextFormField(
decoration: InputDecoration(
labelText: "Insira o número de telefone",
border: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(2.0)))),
),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
FlatButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text("Cancelar")),
FlatButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text("Aceitar"))
],
)
],
),
),
),
);
showDialog(context: context,builder: (context){
return dialog;
});
}
Run Code Online (Sandbox Code Playgroud)
这是我的代码。
I/flutter (31032): Looking …Run Code Online (Sandbox Code Playgroud) 尝试在我的项目中使用 Firestore。我的项目是一个全新的项目,但在我的设备上运行应用程序时出现问题,但没有出现错误: 任务“:app:mergeDexDebug”的执行失败。
我的应用正在使用 AndroidX。我已经添加了我的 google-services.json 文件,按照步骤等操作。
yaml文件:
dependencies:
cloud_firestore: ^0.13.3
Run Code Online (Sandbox Code Playgroud)
android/build.gradle:
com.google.gms:google-services:4.3.3
Run Code Online (Sandbox Code Playgroud)
完整错误:
FAILURE:构建失败,出现异常。
出了什么问题:任务 ':app:mergeDexDebug' 执行失败。执行 com.android.build.gradle.internal.tasks.Workers$ActionFacade com.android.builder.dexing.DexArchiveMergerException 时发生故障:合并 dex 档案时出错:.dex 文件中的方法引用数不能超过 64K。在https://developer.android.com/tools/building/multidex.html了解如何解决此问题
我只想知道在 Dart中assert有什么用。我试图自己弄清楚,但我无法做到。如果有人向我解释assert的使用,那就太好了。
在 Flutter 中,所有Navigator将新元素推送到导航堆栈的函数都会返回 a Future,因为调用者可以等待执行并处理结果。
我大量使用它,例如将用户(通过push())重定向到新页面时。当用户完成与该页面的交互时,我有时还希望原始页面pop():
onTap: () async {
await Navigator.of(context).pushNamed(
RoomAddPage.routeName,
arguments: room,
);
Navigator.of(context).pop();
},
Run Code Online (Sandbox Code Playgroud)
一个常见的示例是使用带有敏感操作(例如删除实体)的按钮的底部工作表。当用户单击该按钮时,将打开另一个底部工作表,要求确认。当用户确认时,确认对话框以及打开确认底部表单的第一个底部表单将被关闭。
所以基本上onTap底部工作表内的“删除”按钮的属性如下所示:
onTap: () async {
bool deleteConfirmed = await showModalBottomSheet<bool>(/* open the confirm dialog */);
if (deleteConfirmed) {
Navigator.of(context).pop();
}
},
Run Code Online (Sandbox Code Playgroud)
这种方法一切都很好。我遇到的唯一问题是 linter 发出警告:use_build_context_synchronouslyBuildContext ,因为我在函数完成后使用相同的警告async。
我忽略/暂停此警告是否安全?但是,我如何使用相同的后续代码等待导航堆栈上的推送操作BuildContext?有合适的替代方案吗?一定有可能做到这一点,对吧?
PS:我不能也不想检查该mounted属性,因为我没有使用StatefulWidget.
我想知道,如果有人知道有一种方法可以删除appBar当你用到Navigator.pushNamed另一个页面时显示在一个颤动的应用程序中的后退按钮.我不希望它在这个结果页面上的原因是它来自导航,我希望用户改为使用该logout按钮,以便会话重新开始.
我想阻止我的应用程序更改其方向并强制布局坚持"肖像".
在main.dart中,我把:
void main(){
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown
]);
runApp(new MyApp());
}
Run Code Online (Sandbox Code Playgroud)
但是当我使用Android模拟器旋转按钮时,布局"跟随"新的设备方向......
我该怎么解决这个问题?
谢谢
我无法找到一种方法在Flutter中创建一个可以打开数字键盘的输入字段.这可能与Flutter材料小部件有关吗?一些github讨论似乎表明这是一个受支持的功能,但我无法找到任何有关它的文档.
ListView当我FutureBuilder用 a包装时,我想在另一个小部件内部有一个小部件Column,以便有一个简单的Row. 我收到此错误:
The following assertion was thrown during performLayout():
I/flutter (13816): RenderFlex children have non-zero flex but incoming height constraints are unbounded.
I/flutter (13816): When a column is in a parent that does not provide a finite height constraint, for example, if it is
I/flutter (13816): in a vertical scrollable, it will try to shrink-wrap its children along the vertical axis. Setting a
I/flutter (13816): flex on a child (e.g. using Expanded) …Run Code Online (Sandbox Code Playgroud) 我有以下 Dart 函数,我现在使用空安全:
void calculate({int factor}) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
分析器抱怨说:
参数“factor”因其类型而不能具有“null”值,并且未提供非空默认值。
这也是我StatelessWidget在 Flutter 中的情况:
class Foo extends StatelessWidget {
const Foo({Key key}): super(key: key);
// ...
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
参数 'key' 因其类型而不能具有 'null' 值,并且未提供非空默认值。
我该如何解决这个问题?
我有一个项目,昨天运行得很好,但是今天我发现这个问题:
无法解析配置“:app:debugRuntimeClasspath”的所有文件。无法解析 com.google.android.gms:play-services-location:16.+。必需者:项目:app > 项目:位置 > 无法列出 com.google.android.gms:play-services-location 的版本。> 无法从https://google.bintray.com/exoplayer/com/google/android/gms/play-services-location/maven-metadata.xml加载 Maven 元数据。> 无法获取资源“https://google.bintray.com/exoplayer/com/google/android/gms/play-services-location/maven-metadata.xml”。> 无法获取“https://google.bintray.com/exoplayer/com/google/android/gms/play-services-location/maven-metadata.xml”。从服务器收到状态代码 502:网关错误
实际上我正在使用classpath 'com.android.tools.build:gradle:4.1.0'with distributionUrl=https://services.gradle.org/distributions/gradle-6.5-bin.zip。
我已经关注了这个问题
并升级 'com.android.tools.build:gradle:4.1.0'到了 classpath 'com.android.tools.build:gradle:4.2.0'。
然后我改成distributionUrl=https://services.gradle.org/distributions/gradle-6.5-bin.zip了,distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip但仍然出现错误。
安卓/build.gradle:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.2.0'
}
}
allprojects {
repositories {
google()
jcenter()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)
gradle-wrapper.properties:
distributionBase=GRADLE_USER_HOME …Run Code Online (Sandbox Code Playgroud) flutter ×10
dart ×8
android ×1
artifactory ×1
asynchronous ×1
bintray ×1
dialog ×1
gradle ×1
lint ×1
navigation ×1