Hello tout le monde,
J’ai découvert une nouvelle façon de remonter le résultat d’une fonction d’un widget dans la vue principale. Je vous partage ça
Dans le widget, je ne crée pas une variable qui contient une fonction mais une variable du type ValueChange qui renverra un int et dans le onTap de la bottomNavigationBar, je fais référence à cette variable
import 'package:flutter/material.dart';
class BottomNavigationBarWidget extends StatefulWidget {
final int selectedIndex;
// c'est ici que ça se passe :
final ValueChanged<int> onTap;
const BottomNavigationBarWidget(
{super.key, required this.selectedIndex, required this.onTap});
@override
State<BottomNavigationBarWidget> createState() =>
_BottomNavigationBarWidgetState();
}
class _BottomNavigationBarWidgetState extends State<BottomNavigationBarWidget> {
@override
Widget build(BuildContext context) {
return BottomNavigationBar(
items: const <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(Icons.place), label: 'Mes Cueillettes'),
BottomNavigationBarItem(icon: Icon(Icons.search), label: 'Découvrir'),
],
iconSize: 26,
selectedIconTheme: const IconThemeData(color: Colors.orange, size: 30),
selectedItemColor: Colors.orange,
backgroundColor: Colors.white,
currentIndex: widget.selectedIndex,
onTap: widget.onTap,
);
}
}
Puis dans ma vue principale, j’obtiens une fonction de type « void Function(int) » et je peux appeler mon viewmodel en passant l’index sélectionner dans mon widget !
bottomNavigationBar: BottomNavigationBarWidget(
selectedIndex: NavBar.discover.index,
onTap: (int index) {
viewmodel.onBottomNavBarTouched(index: index);
}),
Vous connaissiez cette façon de faire ?