skip to Main Content

I need to have the transactions screen and the categories screen widgets as BottomNavigationBarItems

However, i receive this error

The method ‘Transactions’ isn’t defined for the type ‘HomeState’. Try correcting the name of an existing method, or defining a method named ‘Transactions’.

libscreenshome.dart

import 'package:demo_app/screens/categories.dart';
import 'package:demo_app/screens/transactions.dart';
import 'package:flutter/material.dart';

class Home extends StatefulWidget{
  const Home({super.key});

  @override
  State<Home> createState() => HomeState();
}

class HomeState extends State<Home> {
  List<Widget> widgetOptions = [Transactions(), Categories()];
  int selectedIndex = 0;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Welcome to Flutter',
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Logged in!'),
        ),
        body: widgetOptions.elementAt(selectedIndex),
        bottomNavigationBar: BottomAppBar(
          shape: const CircularNotchedRectangle(),
          notchMargin: 4,
          child: BottomNavigationBar(
            backgroundColor: Theme.of(context).primaryColor.withAlpha(0),
            elevation: 0,
            items: const <BottomNavigationBarItem>[
              BottomNavigationBarItem(
                icon: Icon(Icons.account_balance_wallet),
                label: 'Transactions'),
              BottomNavigationBarItem(
                icon: Icon(Icons.category),
                label: 'Categories'),
              BottomNavigationBarItem(
                icon: Icon(Icons.logout),
                label: 'Log out'),              
            ],
            currentIndex: selectedIndex,
            onTap: onItemTapped,
          )
        )
      ),
    );
  }

  void onItemTapped(int index){
    if(index == 2){

    }else{
      setState((){
        selectedIndex = index;
      });
    }
  }
  

}

2

Answers


  1. Chosen as BEST ANSWER

    Actually the code in the below had issues

    screens/categories.dart'; screens/transactions.dart';

    libscreenshome.dart

    Solved those and the issue is no longer there.


  2. Simply add SizedBox() to widgetOptions list.

    List<Widget> widgetOptions = [Transactions(), Categories(), SizedBox()];
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search