Boa tarde, sou novo no flutter e estou desenvolvendo um app, neste momento estou com uma grande dúvida.
Meu app terá três grandes áreas e para isso estou usando o BottomNavigationBar com 3 BottomNavigationBarItem, pois bem.
Tbm estou usando o modular e minha intenção inicial era ter um modulo para cada bottomNivigationItem, ou seja, qdo clicado em algum navitgation item eu gostaria que o meu modulo fosse carregado deixando assim ele bem desecoplado, o lance que não sei oq tou fazendo de errado mas tomo um erro qdo inicio minha page, abaixo segue o codigo da "home" onde o BottomNavigationBar é carregado e é chamado o primeiro Modulo:
`
class HomePage extends StatefulWidget {
const HomePage({Key key}) : super(key: key);
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends ModularState<HomePage, HomeController> {
//use 'controller' variable to access controller
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Observer(
builder: () {
return Text(controller.titles[controller.currentIndex]);
},
),
),
body: Observer(
builder: () {
return controller.getView;
},
),
bottomNavigationBar: Observer(
builder: (_) {
return BottomNavigationBar(
onTap: controller.changeView,
backgroundColor: HexColor.fromHex("#062562"),
currentIndex: controller.currentIndex,
items: [
getTabBarItem("Home Item", Icons.home),
getTabBarItem("Second", Icons.local_activity),
getTabBarItem("Account", Icons.account_box_rounded),
],
);
},
),
);
}
}
`
//Responsável por criar os Items do Navigation
BottomNavigationBarItem getTabBarItem(String label, IconData icon) {
return BottomNavigationBarItem(
icon: Icon(icon),
label: label,
);
HomeController
`
abstract class _HomeControllerBase with Store {
@observable
int currentIndex = 0;
List<String> titles = ["Atividades", "Ativ. Realizadas", "Conta"];
final List<Widget> _children = [
ActivitiesPage(),
PlaceholderWidget(Colors.deepOrange),
PlaceholderWidget(Colors.green)
];
@computed
Widget get getView {
return this._children[this.currentIndex];
}
@action
void changeView(int index) {
this.currentIndex = index;
}
}
`