颤抖地将数据传递给有状态的小部件

时间:2020-04-14 03:31:39

标签: flutter dart

我有点卡住了。我想将数据从控制器传递到要在其他类中使用的电子邮件字符串。如何从控制器获取数据并将其传递给有状态的小部件?

import 'package:jptapp/core/constants/colors.dart';

class LoginPageEmail extends StatefulWidget {
  String email;
  @override
  _LoginPageEmailState createState() => _LoginPageEmailState();
}

class _LoginPageEmailState extends State<LoginPageEmail> {
  final myController = TextEditingController();
  @override
  void initState() {
    super.initState();
  }
  @override
  void dispose() {
    myController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return TextField(
      controller: myController,
      keyboardType: TextInputType.emailAddress,
      decoration: InputDecoration(
        fillColor: MyColors.loginFieldColor,
        hintText: 'Email',
        contentPadding: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0),
        border: OutlineInputBorder(borderRadius: BorderRadius.circular(32.0)),
      ),
    );
  }
}


1 个答案:

答案 0 :(得分:1)

有多种方法可以在小部件之间传递数据,一种方法是在按下页面时在构造函数中接受数据。如果要将数据向下传递到堆栈,另一种方法是调用Navigator.of(context).pop()时,它们是将数据传递到的可选参数结果。

选项1

Navigator.push(
              context,
              MaterialPageRoute(builder: (context) => ExamplePage(myController.text)),
            );

//On the page that is accepting the data
class ExamplePage extends StatefulWidget {
  String email;
  ExamplePage(this.email)
  @override
  _CheckBoxPageState createState() => _CheckBoxPageState();
}

选项2

Navigator.pop(context, 'Data');

final result = await Navigator.push(
      context,
      MaterialPageRoute(builder: (context) => ExamplePage()),
    );

希望您发现这对我有帮助,如果我有其他需要帮助的地方,也请注意处理状态管理的Provider Package软件包。