Flutter 在Dart/Flatter中,如何使用方法中的变量,以便将其输出到文本字段

Flutter 在Dart/Flatter中,如何使用方法中的变量,以便将其输出到文本字段,flutter,methods,dart,Flutter,Methods,Dart,希望有人能帮上忙——几周前我遇到了这个死胡同,我认为我已经在有限的知识范围内尝试了一切 我已经建立了一个工作正常的数据库——也就是说,我可以在一个屏幕上添加数据,查看数据,并在另一个屏幕上编辑数据。现在,我想将我在“debugPrint”中验证过的一列(beef)汇总到控制台。我想从“sumbef”方法访问这个变量“beefTotal”,并在UI的文本字段中打印和显示它。不过我就是没办法。它只返回null 提前感谢您的帮助 import 'package:flutter/material.dar

希望有人能帮上忙——几周前我遇到了这个死胡同,我认为我已经在有限的知识范围内尝试了一切

我已经建立了一个工作正常的数据库——也就是说,我可以在一个屏幕上添加数据,查看数据,并在另一个屏幕上编辑数据。现在,我想将我在“debugPrint”中验证过的一列(beef)汇总到控制台。我想从“sumbef”方法访问这个变量“beefTotal”,并在UI的文本字段中打印和显示它。不过我就是没办法。它只返回null

提前感谢您的帮助

import 'package:flutter/material.dart';
import 'package:take_note/utils/database_helper.dart';

class Info extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => _InfoState();
}

DatabaseHelper helper = DatabaseHelper();
var database = DatabaseHelper();

class _InfoState extends State<Info> {
  List beefTotal;

  @override
  Widget build (BuildContext context) {

    return Scaffold(
        appBar: AppBar(
          title: Text("Beef Info"),
          backgroundColor: Colors.lightBlueAccent,
        ),
        body: Container(
          child: Column(
            children: <Widget>[
              Expanded(
                child: Center(
                  child: RaisedButton(
                    onPressed: (){
                      sumBeef();
                    },
                  ),
                ),
              ),
              Expanded(
                child: Center(
                  child: Text("Total Beef is: £ $beefTotal", style: TextStyle(
                      color: Colors.lightBlueAccent,
                      fontSize: 30.0,
                      fontWeight: FontWeight.w400
                  ),),
                ),
              ),
            ],
          ),
        )
    );
  }

  void sumBeef () async {
    beefTotal = await database.addBeef();
    debugPrint("Total beef: $beefTotal");
  }
}
导入“包装:颤振/材料.省道”;
导入“package:take_note/utils/database_helper.dart”;
类信息扩展StatefulWidget{
@凌驾
State createState()=>\u InfoState();
}
DatabaseHelper=DatabaseHelper();
var database=DatabaseHelper();
类InfoState扩展了状态{
列出啤酒总量;
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“牛肉信息”),
背景颜色:Colors.lightBlueAccent,
),
主体:容器(
子:列(
儿童:[
扩大(
儿童:中心(
孩子:升起按钮(
已按下:(){
苏木牛肉();
},
),
),
),
扩大(
儿童:中心(
孩子:文本(“牛肉总量为:$beefTotal”),样式:文本样式(
颜色:Colors.lightBlueAccent,
字体大小:30.0,
fontWeight:fontWeight.w400
),),
),
),
],
),
)
);
}
void sumBeef()异步{
beefTotal=await database.addBeef();
debugPrint(“全部牛肉:$beefTotal”);
}
}
下面的代码来自一个名为DatabaseHelper的类,方法sumBeef()使用该类

Future addBeef()异步{
Database db=等待此数据库;
var result=await db.rawQuery(“从$table中选择总和(牛肉”);
返回结果;
}
```[在此处输入图像描述][1]
[1]: https://i.stack.imgur.com/L46Gj.png
只要打电话 设定状态({

}))


祝你好运!无论何时进行更改,都必须调用setState方法来更新颤振情况下的ui(重建)

您真是个天才!谢谢。如果不太麻烦的话,最后一个问题是——现在的产出是‘牛肉总量是:£【{SUM(牛肉):205.0}】。我怎么才能拿到205.0英镑呢?您的SQL查询有问题,您想执行db.rawQuery(“选择SUM(beef)as cash FROM$table”);然后,您需要从结果中获取var cash:)将结果分配给新的var beefRow=wait database.addBeef();然后使用beefTotal=beefRow[“cash”].toString();抱歉,我不完全理解您的答案-我做了以下操作:void sumbefee()异步{beefTotal=await database.addBeef();var beefRow=await database.addBeef();beefTotal=beefRow[“cash”].toString();setState((){});debugPrint(“总牛肉:$beefTotal”);}
  Future<List<Map<String, dynamic>>> addBeef()async{
    Database db = await this.database;
    var result = await db.rawQuery("SELECT SUM(beef) FROM $table");

    return result;
  }
```[enter image description here][1]


  [1]: https://i.stack.imgur.com/L46Gj.png
void sumBeef () async {
 beefTotal = await database.addBeef();
 setState(() {});
 debugPrint("Total beef: $beefTotal");
}