首页 > 解决方案 > Flutter 交互式 Text() 在文本更改时重新渲染

问题描述

我有一个 TextField,当我在 OnChange() 中时,我想将变量的状态设置为不同的值。设置此值后,我想重新渲染 Text() 的值。Flutter 不会在状态更改时重新渲染小部件吗?我认为颤振的行为与反应相似,但情况似乎并非如此,至少以直截了当的方式。例如,我想更改 Text 的内容,理想情况下更改为在文本字段中输入的值。我错过了什么吗?我已经尝试浏览文档,但没有发现任何有意义的东西就我想要做的事情而言。

import 'package:flutter/material.dart';
import 'package:wedding_app/models/constants/colors.dart';
import 'package:wedding_app/models/state/budget/budget.dart';
import 'package:intl/intl.dart';

class BudgetPage extends BudgetState {
  String totalBudget;
  final formatCurrency = new NumberFormat.simpleCurrency();

  @override
  Widget build(BuildContext context) {
    return budgetForm(context);
  }

  Widget budgetForm(BuildContext context) {
    return SafeArea(
      top: false,
      bottom: false,
      child: _widgets(context),
    );
  }

  Widget _widgets(BuildContext context) {
    return Material(
      child: new Container(
        padding: EdgeInsets.all(MediaQuery.of(context).size.width * .05),
        color: ApplicationColors.ivory,
        child: Container(
          child: Center(
            child: Column(
              children: <Widget>[
                Padding(
                  padding: EdgeInsets.only(top: 8),
                ),
                Text(
                  totalBudget == "123" ? "123" : "Total Budget", // rerender this on state change of total budget
                  style: TextStyle(
                      fontFamily: "acme",
                      fontSize: 20,
                      fontWeight: FontWeight.w600,
                      color: ApplicationColors.black),
                ),
                Padding(
                  padding: EdgeInsets.only(top: 8),
                ),
                TextField(
                  keyboardType: TextInputType.number,
                  decoration: InputDecoration(
                      hintText: "Enter your budget",
                      labelText: "Total Budget",
                      labelStyle: TextStyle(fontFamily: "acme")),
                  onChanged: (value) {
                    setState(() {
                      totalBudget = formatCurrency.format(value);
                      // tried printing value here with print(totalBudget), but doesn't print to console for some reason. This is where I want to set the state
                    });
                  },
                )
              ],
            ),
          ),
        ),
      ),
    );
  }
}

标签: androiddartflutterstate

解决方案


推荐阅读