簡體   English   中英

從 Flutter 中的父小部件訪問 const 子小部件變量

[英]Access const child widget variable from parent widget in Flutter

我想訪問父窗口小部件中的子窗口小部件變量值,而子窗口小部件是一個 const 窗口小部件,它不允許我將 GlobalKey 用於 const 子窗口小部件。

我的問題是如何在沒有 GlobalKey 的情況下訪問子窗口小部件。 這是我的代碼片段:

 class ParentWidget extends StatefulWidget { @override State<StatefulWidget> createState() { // TODO: implement createState return ParentWidgetState(); } } class ParentWidgetState extends State<ParentWidget> { @override Widget build(BuildContext context) { return Container( child: const LeftSidePanel(),); } } class LeftSidePanel extends StatefulWidget { @override State<StatefulWidget> createState() { // TODO: implement createState return LeftPanelWidgetState(); } const LeftSidePanel( ); } class LeftSidePanelState extends State<LeftSidePanel> { }

請有人回答我的問題。 謝謝

在這個例子中,沒有一個小部件必須是有狀態的(盡量使用盡可能少的有狀態小部件)

import 'package:flutter/material.dart';

class ParentWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: ChildWidget(
        getWidgetTextCallback: (someParameter) {
          print(someParameter);
          // here you can have the value from the Child widget use it wisely
        },
      ),
    );
  }
}

class ChildWidget extends StatelessWidget {
  final widgetText = 'widgetText';

  final Function(String) getWidgetTextCallback;

  const ChildWidget({required this.getWidgetTextCallback});
  
  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        Text(widgetText),
        ElevatedButton(
          onPressed:
              getWidgetTextCallback(widgetText),
          child: Text(widgetText),
        )
      ],
    );
  }
}

暫無
暫無

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

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