首页 > 解决方案 > 在 Dart/Flutter 中,如何使用方法中的变量,以便将其输出到文本字段

问题描述

希望有人可以提供帮助-几周前我遇到了这个死胡同,并认为我已经在我有限的知识范围内尝试了所有方法。

我已经建立了一个可以正常工作的数据库——也就是说,我可以在一个屏幕上添加数据、查看数据并在另一个屏幕上编辑数据。现在,我想将在“debugPrint”中证明的我能够做到的列(牛肉)之一汇总到控制台。我想从 'sumBeef' 方法访问这个变量 'beefTotal' 并在 UI 的文本字段中打印显示它。我只是无法管理它。它只是返回空值。

提前感谢您的帮助。

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");
  }
}

下面的代码来自一个名为 DatabaseHelper 的类,方法 sumBeef() 使用该类

  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

标签: fluttermethodsdart

解决方案


只需调用 setState({

});

void sumBeef () async {
 beefTotal = await database.addBeef();
 setState(() {});
 debugPrint("Total beef: $beefTotal");
}

和你的好!每当您进行更改时,您都必须调用 setState 方法来更新 ui(重建)在颤振的情况下


推荐阅读