dart 调用Navigator.pop()时刷新上一页API

uqxowvwt  于 2023-03-10  发布在  其他
关注(0)|答案(1)|浏览(187)

我在flutter中使用了以下代码,首先将数据放入页面:

Future<void> _getGoalsList() async {
    final response =
        await http.post(Uri.parse('http://10.0.2.2:1111/goal/getGoals/1'));
    final responseData = jsonDecode(response.body);
    final goalsList = responseData['getGoals'];
    goalsList.forEach((goal) {
      goals.add(Goals(
          id: goal['id'],
          goal_name: goal['goal_name'],
          goal_picture: goal['goal_picture']));
    });
    setState(() {
      _goalList = goals;
    });
  }

  @override
  void initState() {
    super.initState();
    _getGoalsList();
  }

在这个页面中,我有一个按钮,可以转到添加新目标的页面:

FloatingActionButton.small(
  onPressed: () {
    Navigator.pushNamed(context, '/addGoals');
  },
),

现在在我的添加目标页面中,我有一个确认按钮,它会带我回到上一页:

ElevatedButton(
  onPressed: () {
    _addGoalToList();
    Navigator.pop(context);
  },
  child: Text('Confirm'),
),

现在,我希望每当用户单击确认时都调用_API,以便获取新数据

gmxoilav

gmxoilav1#

你可以添加一个布尔值来检查数据是否已经被添加到列表中。根据数据你可以传递赋值给isUpdated变量。

ElevatedButton(
  onPressed: () {
    bool isUpdated = false;
    _addGoalToList();
    isUpdated = true;
    Navigator.pop(context,isUpdated);
  },
  child: Text('Confirm'),
),

在列表页面中,只需检查页面的结果。

FloatingActionButton.small(
  onPressed: () async{
    final result = await Navigator.pushNamed(context, '/addGoals');
    if(result = true){
    
    // code to update the list
    _getGoalsList();
 
    }
  },
),

相关问题