Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: El Hombre Sin NombreОтветов: 1

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

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

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

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

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

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

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

flutternavigationbar

Ответы

Ответ 1 · рейтинг 5 · Manish Dhruw

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы