【问题标题】:Curved Navigation Package rebuilds page upon tap弯曲的导航包在点击时重建页面
【发布时间】:2020-09-11 11:33:16
【问题描述】:

我在 Flutter 中使用了一个名为 curl_navigation_bar 的包。我遇到的唯一问题是,每次我点击一个按钮时,该页面都会重新构建。我正在主页上获取一些数据,并且在获取我的数据时有一个加载微调器。但是,每次我转到不同的选项卡,然后返回主页时,都会再次获取数据,因此每次返回时都必须重新加载,因此使用了微调器。有没有办法只获取一次数据?

main.dart(我从其他文件导入了所有其他小部件):

Widget build(BuildContext context) {
    return Scaffold(
      body: _currentIndex == 0
          ? Home()
          : _currentIndex == 1
              ? Data()
              : _currentIndex == 2 ? Precautions() : Settings(),
      bottomNavigationBar: CurvedNavigationBar(
        height: 60,
        animationDuration: Duration(milliseconds: 250),
        backgroundColor: accentColor,
        color: mainColor,
        buttonBackgroundColor: mainColor,
        items: [
          NavBarItem(Icons.home, _currentIndex == 0 ? null : 'Home'),
          NavBarItem(Icons.data_usage, _currentIndex == 1 ? null : 'Data'),
          NavBarItem(
              Icons.favorite_border, _currentIndex == 2 ? null : 'Precautions'),
          NavBarItem(Icons.settings, _currentIndex == 3 ? null : 'Settings'),
        ],
        onTap: (index) {
          setState(() {
            _currentIndex = index;
          });
        },
      ),
    );
  }
}

home.dart 中的代码,使用 futurebuilder 获取数据:


Map<String, dynamic> local;

Future<Map<String, dynamic>> fetchLocal() async {
    Map<String, dynamic> result;
    String url = 'api that i am using to fetch data.com';
    var responseLocal = await http.get(url);
    var convertedLocal = jsonDecode(responseLocal.body);

    result = convertedLocal[convertedLocal.length - 1];
    local = result;
    return result;
  }

【问题讨论】:

    标签: flutter flutter-navigation


    【解决方案1】:

    您可以使用bdnavs。它每次都会更新数据。

    【讨论】:

    • 这是一个很好的建议,但我不希望每次都更新数据,只是在我第一次启动应用程序时更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    • 2020-02-15
    • 2022-01-25
    相关资源
    最近更新 更多