簡體   English   中英

Flutter 將數據傳遞給 Stateful Widget

[英]Flutter passing data to Stateful Widget

我有點卡住了。 我想將我的 controller 中的數據傳遞給我想在另一個 class 中使用的 email 字符串。 如何從 controller 獲取數據並將其傳遞給 Stateful 小部件?

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)),
      ),
    );
  }
}


有多種方法可以在小部件之間傳遞數據,一種方法是在推送頁面時在構造函數中接受數據。 如果要將數據向下傳遞到堆棧,另一種方法是在調用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()),
    );

希望您發現這對您有幫助,如果還有什么我可以幫助您,讓我知道還可以查看處理 state 管理的Provider Package很棒的 package。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM