当我拍照时,Flutter不会重新加载图像

问题描述 投票:-2回答:1

我正在研究颤动,我正在尝试创建人名登记。在此页面中,我拥有一个包含基本数据和个人照片的常规寄存器。

但是我在更新图像时遇到一些问题,当我拍摄照片时,图像组件不会更改为拍摄的图像;我试图找到一些控制器到图像或图像提供程序,但没有成功。这是我的代码:

class _RegisterForm extends State<RegisterForm> {
  final TextEditingController _textEditingControllerPassword =
      new TextEditingController();
  final TextEditingController _textEditingControllerComparePassword =
      new TextEditingController();
  final TextEditingController _textEditingControllerEmail =
      new TextEditingController();
  final TextEditingController _textEditingControllerFullName =
      new TextEditingController();

  final _formKey = GlobalKey<FormState>();
  User _user = null;
  Image _image = null;

  @override
  void setState(VoidCallback fn) {
    super.initState();
    this._user = new User(
      _textEditingControllerPassword.text,
      _textEditingControllerFullName.text,
      _textEditingControllerEmail.text,
      _textEditingControllerComparePassword.text,
      _image,
    );
    this.build(context);
  }


  @override
  Widget build(BuildContext context) {
    return Form(
        key: _formKey,
        child: Padding(
          padding: const EdgeInsets.fromLTRB(23, 0, 23, 0),
          child: Column(children: <Widget>[
            GestureDetector(
              child: CircleAvatarImage(_image),
              onTap: getImage,
            ),
            Padding(
              padding: const EdgeInsets.all(8.0),
              child: Text("Tire sua foto!"),
            ),
            InputString(
              "Como gostaria ",
              hint: "Marianx Silva",
              maxLenght: 100,
              controller: this._textEditingControllerFullName,
              onChanged: (context) => {
                setState(() {
                  _user = null;
                }),
              },
            ),
            InputString(
              "E-mail",
              maxLenght: 100,
              controller: this._textEditingControllerEmail,
              onChanged: (context) => {
                setState(() {
                  _user = null;
                }),
              },
            ),
            InputString(
              "Senha",
              controller: this._textEditingControllerPassword,
              maxLenght: 12,
              obscureText: true,
              onChanged: (context) => {
                setState(() {
                  _user = null;
                }),
              },
            ),
            InputString(
              "Confime a senha",
              controller: this._textEditingControllerComparePassword,
              maxLenght: 12,
              obscureText: true,
              onChanged: (context) => {
                setState(() {
                  _user = null;
                }),
              },
            ),
            RegisterUserInFirebaseButton(
              "Continuar",
              _formKey,
              _user,
//              edgeInsets: EdgeInsets.fromLTRB(0, 40, 0, 0),
            ),
          ]),
        ));
  }

  Future getImage() async {
    File image = await ImagePicker.pickImage(source: ImageSource.camera);
    this._image = Image.file(image);
    setState(() {
      _user = null;
    });
  }
}
flutter flutter-layout
1个回答
0
投票

您未使用setState。因此,widget不可能没有它必须udpate。尝试:

setState() => this._image = Image.file(image);
© www.soinside.com 2019 - 2024. All rights reserved.