Flutter - отправить параметры в нижней панели навигации

У меня две разные страницы. Один из них - форма, другой - список элементов. Если вы проведете пальцем по одному из элементов влево, можете редактировать. Мне нужно отправить данные элемента (из списка) на первую страницу (форму)

Когда приложение запускается, данные равны нулю, если они поступают из списка элементов, не равны нулю.

Штрих-код навигации:

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;
    });
  }
}

Когда я пытаюсь отправить параметры из списка элементов (используя нижнюю панель навигации) в форму, возвращает

В инициализаторах можно получить доступ только к статическим членам.

Кто-нибудь знает, как это исправить?


person El Hombre Sin Nombre    schedule 10.05.2019    source источник


Ответы (1)


_NavigationState Объект не создан, поэтому вы еще не можете получить доступ к получателю виджета, потому что он не инициализирован и его свойство не статическое.

изменение

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

to

 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
    );
}
person Manish Dhruw    schedule 10.05.2019
comment
Спасибо. Это сработало для меня - person Anju mohan; 03.06.2021
comment
@Anjumohan рад - person Manish Dhruw; 06.06.2021
comment
Просто и удивительно. Какие еще подходы мы можем использовать для решения этой проблемы? - person Patzu; 23.06.2021