dart – Flutter – 是否可以在不使用FutureBuilder的情况下从Future中提取数据?

dart – Flutter – 是否可以在不使用FutureBuilder的情况下从Future中提取数据?,第1张

概述我正在从TextField读取用户提供的输入(在本例中为邮政编码),我需要检查数据库的有效性.但是,我需要在提交按钮(在本例中为RaisedButton)onPressed :(){} lambda函数内部进行异步数据库查询.在大多数编程语言中,这是一项相当简单和简单的任务.然而,我在Flutter中遇到的问题是,从异步数据库查询返回的Future对象只能由FutureBuilder对象使用,而F 我正在从TextFIEld读取用户提供的输入(在本例中为邮政编码),我需要检查数据库的有效性.但是,我需要在提交按钮(在本例中为Raisedbutton)onpressed :(){} lambda函数内部进行异步数据库查询.在大多数编程语言中,这是一项相当简单和简单的任务.然而,我在Flutter中遇到的问题是,从异步数据库查询返回的Future对象只能由FutureBuilder对象使用,而FutureBuilder对象又只返回Widget对象.我只需要返回一个String,然后我可以使用它通过MaterialPageRoute对象传递给新路径,或者在不更改路径的情况下向用户显示错误. Flutter有没有办法做到这一点?返回Widget对我来说没用,因为我不想创建一个新的Widget来显示.我正在使用Flutter 0.3.2和Dart 2.0.0

作为我需要调用数据库查询的简化示例:

@overrIDeWidget build(Buildcontext context) {    return new Column(        mainAxisAlignment: MainAxisAlignment.center,children: <Widget>[            new Container(                padding: const EdgeInsets.all(16.0),child: new TextFIEld(                    keyboardType: TextinputType.number,controller: _controller,decoration: new inputdecoration(                    hintText: 'Zip Code',),onsubmitted: (string) {                  return string;                },new Raisedbutton(                onpressed: () {                        // use regex to test against user input                        if (_controller.text != null && _controller.text.isNotEmpty) {                            RegExp zipCodeRegExp = new RegExp(r"^(\d{5})$");                            // if the user input valIDates...                            if (zipCodeRegExp.hasMatch(_controller.text)) {                            zipCode = _controller.text;                           // need to perform database query here and return a string,not a Widget                            } else {                               // an else condition here                            }                        } else {                           // an else condition here                        }                    }                }            ),],);}

也许我不是在跟随Flutter的“口头禅”?我感谢您对此的考虑和意见.

解决方法 FutureBuilder只是一个方便的助手,可以在Future完成时重建Widget树.

您可以使用

funcThatReturnsFuture().then((result) {  print(result);  setState(() {    someVal = result;  })})

要么

Future funcThatMakesAsyncCall() async {  var result = funcThatReturnsFuture();  print(result);    setState(() {    someVal = result;  })}

主要限制是,如果没有Future,则无法将值直接返回给调用者,因为无法从异步执行返回到同步执行.

总结

以上是内存溢出为你收集整理的dart – Flutter – 是否可以在不使用FutureBuilder的情况下从Future中提取数据?全部内容,希望文章能够帮你解决dart – Flutter – 是否可以在不使用FutureBuilder的情况下从Future中提取数据?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1000499.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存