如何动态更改 TextFormField initialValue?

How to change TextFormField initialValue dynamically?

我正在尝试使用提供者模型中的值来更新 TextFormField 的 initialValue,但 initialValue 没有改变。


import 'package:flutter/material.dart';
import 'package:new_app/models/button_mode.dart';
import 'package:provider/provider.dart';

class EditWeightTextField extends StatelessWidget {


  const EditWeightTextField(
      {Key? key})
      : super(key: key);

  @override
  Widget build(BuildContext context) {
  
    return Consumer<ButtonMode>(builder: (context, buttonMode, child) {
        return TextFormField(
            initialValue: buttonMode.weight.toString(),
            validator: (value) {
              if (value == null || value.isEmpty) {
                return 'Please enter weight';
              }
              return null;
            },
         
              );
    });
  }
}

如果我使用 Text(${buttonMode.weight}') 而不是 TextFormField,则文本会正确更新。我该怎么做才能让它与 TextFormField 一起工作?

在这种情况下,您可以使用 TextEditingController。

TextEditingController _controller = TextEditingController();

Consumer<ButtonMode>(builder: (context, buttonMode, child) {

        if(buttonMode.weight != null && _controller.text != buttonMode.weight){ // or check for the null value of button mode.weight alone
             _controller.text = buttonMode.weight ?? '' ;
        }
        return TextFormField(
            controller : _controller,
            validator: (value) {
              if (value == null || value.isEmpty) {
                return 'Please enter weight';
              }
              return null;
            },
         
              );
    });