簡體   English   中英

如何在 Flutter 中將文本小部件數據從一個屏幕傳遞到另一個屏幕?

[英]How to pass text widget data from one screen to another screen in Flutter?

我正在嘗試將文本小部件數據從一個屏幕傳遞到另一個屏幕,但我不知道如何在顫振中做到這一點。

我知道如何從文本字段中做到這一點並在屏幕之間傳遞。 例如使用控制器。

child: Text('Repetition', style: TextStyle(fontSize: 18, fontWeight: FontWeight.normal),)),

 onPressed: ()=>{
            Navigator.push(context, MaterialPageRoute(
                builder:(context) => FingerGoalSt()))
          },

我想將重復字符串傳遞到下一個屏幕。

在其他平台上這很容易,但在顫振中我不知道,因為我是新手。 謝謝。

var yourString = 'Repetition'
child: Text(yourString, style: TextStyle(fontSize: 18, fontWeight: FontWeight.normal),)),

 onPressed: ()=>{
            Navigator.push(context, MaterialPageRoute(
                builder:(context) => FingerGoalSt(yourString)))
          },

在你的FingerGoalSt中添加一個帶參數的構造函數。

您可以傳遞存儲數據的變量

    child: Text(snapshot.data.docs[index].get('name'), style: TextStyle(fontSize: 18, fontWeight: FontWeight.normal),)),

 onPressed: ()=>{
            Navigator.push(context, MaterialPageRoute(
                builder:(context) => FingerGoalSt(snapshot.data.docs[index].get('name'))))
          },

請參考以下代碼

Navigator.push(
              context,
              MaterialPageRoute(
                builder: (context) => FingerGoalSt(
                  textVal: "Repetition",
                ),
              ),
            );



class FingerGoalSt extends StatefulWidget {
final String textVal;
  const FingerGoalSt({Key key, this.textVal}) : super(key: key);
 @override
  _FingerGoalStState createState() => _FingerGoalStState();
}

class _FingerGoalStState extends State<FingerGoalSt> {

}


請嘗試以下示例代碼

示例 1:

onPressed: () async {
   Navigator.pushNamed(context, '/FingerGoalSt',arguments:{"textvalue":"any text"});}


class FingerGoalSt extends StatelessWidget {
  const FingerGoalSt({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {

    Map arguments = ModalRoute.of(context)?.settings.arguments as Map;

    return  Scaffold(
      appBar: AppBar(
        title:  Text('Value : ${arguments['textvalue']}'),
      ),
      body: Text("${arguments['textvalue']}"),
    );
  }
}

示例 2:

class FirstScreen extends StatefulWidget {
  const FirstScreen({Key key}) : super(key: key);

  @override
  _FirstScreenState createState() => _FirstScreenState();
}

class _FirstScreenState extends State<FirstScreen> {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Center(
        child: InkWell(
          onTap: () {
            Navigator.push(
              context,
              MaterialPageRoute(
                builder: (context) => SecondScreen(
                  dataList: ["Data"],
                ),
              ),
            );
          },
          child: Text(
            "Second Screen",
          ),
        ),
      ),
    );
  }
}

class SecondScreen extends StatefulWidget {
  final List dataList;
  const SecondScreen({Key key, this.dataList}) : super(key: key);

  @override
  _SecondScreenState createState() => _SecondScreenState();
}

class _SecondScreenState extends State<SecondScreen> {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Center(
        child: Text(
          widget.dataList[0].toString(),
        ),
      ),
    );
  }
}

有關更多信息,請參閱此鏈接說明

暫無
暫無

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

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