如何通過在 Flutter 中作為參數傳遞給該對象的函數來更改對象的屬性

喬爾

我想更改 MyButton 中文本字段的值,這樣,每次單擊按鈕時,該值都會更改。我已將該值設置為 MyButton 中的一個屬性,並將一個函數從 MyButtonRow 傳遞給 MyButton,該函數將在每次單擊時執行。在該函數中,我想更改 MyButton 的屬性“myString”,因此它會自動更新文本字段。

代碼:

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

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

class _MyButtonRowState extends State<MyButtonRow> {
  @override
  Widget build(BuildContext context) {
    return Container(width: MediaQuery.of(context).size.width,
        child: Row(children: <Widget>[MyButton(onTap: (){
          print("Notify me");
          //I want to change the myText attribute of MyButton here
        }, myText: "Hello",)],));
  }
}

class MyButton extends StatefulWidget {
  final Function onTap;
  final String myText;
  const MyButton({Key? key, required this.onTap, required this.myText}) : super(key: key);

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

class _MyButtonState extends State<MyButton> {
  var onTap;
  var myString;
  @override
  void initState() {
    onTap = widget.onTap;
    myString = widget.myText;
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return TextButton(onPressed:onTap,
        child: Text(myString));
  }
}
熟人

問題是您將 newValue 作為構造函數參數傳遞並將其分配給保持狀態的局部變量。每當調用重建時, initState 函數永遠不會再次調用,只是第一次,我建議不要使用:

@override
  Widget build(BuildContext context) {
    return TextButton(onPressed:onTap,
        child: Text(myString));
  }

你繼續使用:

@override
      Widget build(BuildContext context) {
        return TextButton(onPressed:onTap,
            child: Text(widget.myText));
      }

在這種情況下,只要父級重建您的小部件,該值就會更新。有道理?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何通過將 Map 解析為構造函數來創建對象?

通過作為道具傳遞給孩子的對象進行映射

UML 類圖:對象通過構造函數關係傳遞?

如何在python中將函數參數作為模塊的屬性傳遞?

我如何創建一個函數來更改位於數組內的對象內的屬性,在 JSON 中

如何通過在js中使用reduce返回數組中的對象來創建嵌套對象

如何通過傳遞字符串來獲取對象的值

如何通過ajax MVC將對象列表傳遞給方法

你如何通過一個參數對數組列表中的對象進行排序,然後如果該參數與 Java 中另一個參數的順序相同?

我應該如何在 Python 函數中將 Spark SQL DataFrame 作為參數傳遞?

通過函數返回時推斷出確切的對象屬性類型

如何將對像作為參數傳遞給 Vue @click 事件處理程序

如何將按鈕作為參數傳遞給函數?

如果該對象包含在 javascript 中的對像數組中,如何檢查整個原始對象(不使用任何屬性)?

如何在函數聲明中向 python 函數對象添加自定義屬性?

如何對返回對象屬性的函數進行強類型化?

如何使用 React Hooks 和 Redux 將數據傳遞給對象

如何通過相同的屬性 unsing LINQ 組合集合中的對象?

如何在 GTK4 中通過對象 ID 應用 CSS 屬性?

Kotlin - 如何傳遞具有類構造函數的函數,該函數具有自己的參數作為可組合的參數?

如何僅通過在請求中傳遞特定參數來獲取特定參數?SpringBoot API

如何查找傳遞給函數的對象名稱

如何訪問作為python中類屬性的對象列表中的對象屬性?

如何通過 Toggle Swiftui 傳遞函數

如何使用javascript將對象屬性解析為嵌套數組數組?

使用 ctypes 通過引用接收傳遞對象

如何通過對像數組映射以提取對象值?

如何通過添加匹配對像作為新字段來合併兩個對像數組

我可以通過 html 的腳本標籤屬性將數組對像傳遞給 javascript 嗎?