Flutter - 在底部导航栏中发送参数

标签 flutter navigationbar

我有两个不同的页面。其中一个是表单,另一个是元素列表。如果您向左滑动其中一个元素,则可以进行编辑。我需要将元素数据(从列表中)发送到第一页(表单)

当应用程序启动时数据为空,如果它来自元素列表则不为空。

导航条码为:

import 'package:flutter/material.dart';
import 'package:datameter/screens/configuration/form/partials/home_page.dart';
import 'package:datameter/screens/configuration/list/datameters.dart';
import 'package:datameter/locations/locations.dart';

class Navigation extends StatefulWidget {

 final item;

  Navigation(
      {Key key,
      this.item})
      : super(key: key);

  @override
  State<StatefulWidget> createState() {
    return _NavigationState();
  }
}

class _NavigationState extends State<Navigation> {

  int currentIndex = 0;
  List<Widget> children = [
    HomePageScreen(datameter: widget.item), //ERRROR HERE
    DatametersPageScreen(),
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: children[currentIndex],
      bottomNavigationBar: new Theme(
          data: Theme.of(context).copyWith(
            primaryColor: Colors.blue[700],
            textTheme: Theme.of(context)
                .textTheme
                .copyWith(caption: new TextStyle(color: Colors.black)),
          ),
          child: BottomNavigationBar(
            onTap: onTabTapped,
            currentIndex: currentIndex,
            items: [
              BottomNavigationBarItem(
                icon: Icon(Icons.add),
                title: Text(DemoLocalizations.of(context).text('new-device')),
              ),
              BottomNavigationBarItem(
                icon: Icon(Icons.list),
                title: Text(DemoLocalizations.of(context).text('show-all')),
              ),
            ],
          )),
    );
  }

  void onTabTapped(int index) {
    setState(() {
      currentIndex = index;
    });
  }
}

当我尝试将参数从元素列表(使用导航底部栏)发送到表单时,返回

Static only members can be accessed in initializers.

有人知道如何解决这个问题吗?

最佳答案

_NavigationState 对象未构造,因此您无法访问“小部件”getter,因为它未初始化且也不是静态属性。

改变

 List<Widget> children = [
    HomePageScreen(datameter: widget.item), //ERRROR HERE
    DatametersPageScreen(),
  ];

 List<Widget> _children() =>
 [   
    HomePageScreen(datameter: widget.item),
    DatametersPageScreen(),
 ];

然后在您的构建更改中

@override
Widget build(BuildContext context)
{
    final List<Widget> children = _children();

    return Scaffold
    (
        //code
        body: children[currentIndex],
        //code
    );
}

关于Flutter - 在底部导航栏中发送参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56073366/

相关文章:

html - 在导航栏中居中元素

flutter - 如何更改图像颜色?

flutter - 当我尝试运行 flutter doctor 或任何 flutter 命令时,它给出错误

ios - 如何通过快速添加 View 来重叠导航栏?

android - 隐藏导航栏而不在android上生根

ios - 如何更改导航栏中 titleView 的大小。因为在 navigationBar 的 titleView 和 backButton 之间有一个空隙

Android:无法更改 v7 支持工具栏的 NavigationIcon

上下文给出的 flutter 脚手架 "does not contain a Scaffold"

Flutter Null安全迁移说 `Package doesn'不存在`

flutter - 在部分图像上叠加渐变着色器 mask