首页 > 解决方案 > 如何在颤动中将输入值从扩展的子小部件返回到父小部件

问题描述

我无法理解如何将输入信息从扩展的子小部件传递回其父小部件。我试图在父小部件中创建一个设置器,但我无法通过“ParentWidget.of(context).setterName”调用它。

将用户输入信息从子窗口小部件传回父窗口的最佳方式是什么?

谢谢你的帮助

class SignInMobilePortrait extends StatefulWidget {
  @override
  _SignInMobilePortraitState createState() => _SignInMobilePortraitState();
}

class _SignInMobilePortraitState extends State<SignInMobilePortrait> {

  //text field state
  String _email = '';

  set email(String value) => setState(() => _email = value);

  ...

  LoginCredentials(),

  ...

}

class LoginCredentials extends StatelessWidget {

  LoginCredentials({
    Key key,
  }) : super(key: key);

  Widget build(BuildContext context) {    
    return Container(

     ...

                onChanged: (value) {
                 //CHANGE EMAIL VALUE HERE;
                },
     ...
}

标签: flutterdart

解决方案


正确的方法是TextEditingControllerSignInMobilePortraitdown 传递到LoginCredentials

class _SignInMobilePortraitState extends State<SignInMobilePortrait> {

  final _emailController = TextEditingController();

  LoginCredentials(_emailController),

  ...
  // Access _emailController.text somewhere

}


class LoginCredentials extends StatelessWidget {
  final TextEditingController controller;
  LoginCredentials({
    Key key,
    @required this.controller,
  }) : super(key: key);

  Widget build(BuildContext context) {    
    return TextField(
     ...
     controller: controller,
}


推荐阅读