代码之家  ›  专栏  ›  技术社区  ›  Ale

来自另一屏幕的颤振更新状态

  •  2
  • Ale  · 技术社区  · 6 年前

    ListView . 在第一个元素中,我显示变量的值 selectedObject .

    ListTile 按下时,打开第二个屏幕。我想更新 选定对象 从第二个屏幕返回后的值。

    result 变量。

    我想我得打电话给 setState 方法,但我不知道怎么做。

    class _FilterTaskState extends State<FilterTask> {
    List taskList;
    
    String selectedObject = "initial value";
    
    @override
    Widget build(BuildContext context) {
    return new Scaffold(
      appBar: _buildAppBar(context, "AppBar Title"),
      body: Center(
        child: new ListView(
          children: <Widget>[
             new ListTile(
              leading: new Icon(Icons.home, color: Colors.black),
              title: new Text("Selected Object", style: styleTitle),
              subtitle: new Text(selectedObject),
              trailing: new Icon(Icons.play_arrow, color: Colors.black),
              onTap: () => _navigateToFilterObject(context),
            ),
    
            ...
    
          ],
         )
       ),
      );
     }
    }
    
    
     _navigateToFilterObject(BuildContext context) async {
        final result = await Navigator.push(context, 
        MaterialPageRoute(builder: (context) => FilterObject()),);
    
        /// I want to set the 'selectedObject' value
        /// selectedObject = result;
    
    }
    
    1 回复  |  直到 6 年前
        1
  •  4
  •   diegoveloper    6 年前

    关于你的 FilterObject 小部件在选择如下项时返回值:

            Navigator.of(context).pop(theValueYouWantToReceive);
    

    result 变量:

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

    最终代码

         _navigateToFilterObject(BuildContext context) async {
                final result = await Navigator.push(context, 
                MaterialPageRoute(builder: (context) => FilterObject()),);
                 //refresh the state of your Widget
                     setState(() {
                  selectedObject = result;
                });
    
         }
    

    _navigateToFilterObject 一定在你的身体里 _FilterTaskState

    了解导航器弹出窗口: https://docs.flutter.io/flutter/widgets/Navigator/pop.html