gpt4 book ai didi

flutter - Flutter:弹出导航时未调用内部版本

转载 作者:行者123 更新时间:2023-12-03 04:33:27 25 4
gpt4 key购买 nike

我已经使用提供程序库已有一段时间了,以尝试掌握它。
我最近遇到了导航问题。
在我的应用程序中,我有一个“订单”,其中包含处于提供者状态(appState)的产品。订单在菜单 View 中建立。然后,我使用以下代码转到“产品评论”屏幕:

 Navigator.push(
context,
PageRouteBuilder(
transitionDuration: transitionDuration == null
? Duration(
milliseconds: appState.settings
.standardPageNavigatoinDuration) // standard app durration
: transitionDuration,
pageBuilder: (_, __, ___) => Provider<TrinoAppState>.value(
child: view,
value: appState,
),
),
用户可以在订单查看屏幕中修改产品数量。例如,如果要编辑数量,然后更新订单(保持在应用程序状态)。
问题
我的问题是,当用户从订单复审中单击时,菜单屏幕上的构建功能似乎没有被触发,因此它不会更新(尽管已删除订单中的物品,仍显示旧价格)。
我不确定解决此问题的最佳方法是什么,您有什么建议吗?

最佳答案

一个简单而有效的解决方案是在使用pop时调用setState(我假设这是您返回第一页的方法)。
看起来像这样:

  Navigator.push(
context,
PageRouteBuilder(
transitionDuration: transitionDuration == null
? Duration(
milliseconds:
appState.settings.standardPageNavigatoinDuration) // standard app durration
: transitionDuration,
pageBuilder: (_, __, ___) => Provider<TrinoAppState>.value(
child: view,
value: appState,
),
),
).whenComplete(() => setState((){})),
这是一个小例子。在三种情况下调用 whenComplete方法:
  • 您调用Navigator.pop(单击FAB时会发生这种情况)
  • appBar中的后退按钮(隐式调用Navigator.pop tbh)
  • 按下手机的后退按钮
  • import 'dart:math';

    import 'package:flutter/material.dart';

    main() {
    runApp(MaterialApp(home: MyApp()));
    }

    class MyApp extends StatefulWidget {
    @override
    _MyAppState createState() => _MyAppState();
    }

    class _MyAppState extends State<MyApp> {
    @override
    Widget build(BuildContext context) {
    return Scaffold(
    appBar: AppBar(
    title: Text('First page'),
    ),
    floatingActionButton: FloatingActionButton(
    backgroundColor: Colors.red,
    onPressed: () {
    Navigator.push(
    context,
    MaterialPageRoute(builder: (context) => SecondRoute()),
    ).whenComplete(() => print('POP'));
    },
    ),
    );
    }
    }

    class SecondRoute extends StatefulWidget {
    @override
    _SecondRouteState createState() => _SecondRouteState();
    }

    class _SecondRouteState extends State<SecondRoute> {
    @override
    Widget build(BuildContext context) {
    return Scaffold(
    appBar: AppBar(
    title: Text('Second page'),
    ),
    floatingActionButton: FloatingActionButton(
    onPressed: () {
    Navigator.pop(context);
    },
    ),
    );
    }
    }

    关于flutter - Flutter:弹出导航时未调用内部版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64533873/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com