RangeError (index): Index out of range: index should be less than 1: 1 Dart
Я здесь уже спрашивал, как соединить два списка между собой, если их оба нужно отфильтровать по тайтлам, при этом у них нет общего айди. Сейчас я пытаюсь сделать так, чтобы при переходе на другую страницу отображались отфильтрованные элементы, принадлежащие каждому магазину.
В ответ получаю вот такую ошибку - RangeError (index): Index out of range: index should be less than 1: 1, при этом сам элемент отфильтрован и показывается на экране правильно. Как можно это избежать?
На скринах, что я имею ввиду:
Код с 1 страницы:
List<Coffee> uniteCoffee(List<CoffeeShop> coffeeShop, List<CoffeeShopMenu> coffeeMenu){
if(coffeeShop.length != coffeeShop.length) return [];
List<Coffee> temp = <Coffee>[];
for(int i = 0; i<coffeeShop.length; i++) {
temp.add(Coffee(coffeeShop[i], coffeeMenu[i]));
}
return temp;
}
final List<Coffee> coffee = uniteCoffee(coffeeShop, coffeeMenu);
return Scaffold(
body: ListView.builder(itemCount: coffee.length,itemBuilder: (context, index){
return ListTile(
title: Text(coffee[index].shop.shopTitle),
onTap: (){
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Exp1(
shopMenuTitle: coffee[index].menu.shopMenuTitle,
)));
Код со 2ой
Exp1({Key key, this.shopMenuTitle, this.coffee}) : super(key: key);
List<CoffeeShopMenu> get coffeeMenuTitle => coffeeMenu.where((element) => element.shopMenuTitle == shopMenuTitle).toList();
@override
Widget build(BuildContext context) {
List<Coffee> uniteCoffee(List<CoffeeShop> coffeeShop, List<CoffeeShopMenu> coffeeMenu){
if(coffeeShop.length != coffeeShop.length) return [];
List<Coffee> temp = <Coffee>[];
for(int i = 0; i<coffeeShop.length; i++) {
temp.add(Coffee(coffeeShop[i], coffeeMenu[i]));
}
return temp;
}
final List<Coffee> coffee = uniteCoffee(coffeeShop, coffeeMenu);
return Scaffold(
body: ListView.builder(itemCount: coffee.length,itemBuilder: (context, index){
return ListTile(
title: Text(coffeeMenuTitle[index].shopMenuTitle),
);
}),
);

