![](/img/trans.png)
[英]How to merge two audio files with just_audio for playing both at the same time?
[英]How to merge two arrays if they both don't have the same size DART?
我有一個問題,如果兩個列表的大小不同,如何組合它們?
例如,我有
final List<CoffeeShop> coffeeShop = <CoffeeShop>[
CoffeeShop(mrId: 1, shopTitle: 'Strarbucks A'),
CoffeeShop(mrId: 2, shopTitle: 'Dunkin doghnuts B'),
CoffeeShop(mrId: 3, shopTitle: 'Subway B'),
CoffeeShop(mrId: 4, shopTitle: 'MCCafe A'),
CoffeeShop(mrId: 5, shopTitle: 'Coffee Shop B'),
];
第二個名單:
final List<CoffeeShopMenu> coffeeMenu = <CoffeeShopMenu>[
CoffeeShopMenu(sid: 1, shopMenuTitle: 'Matcha'),
CoffeeShopMenu(sid: 1, shopMenuTitle: 'Matcha'),
CoffeeShopMenu(sid: 4, shopMenuTitle: 'Matcha'),
CoffeeShopMenu(sid: 4, shopMenuTitle: 'pie'),
];
我需要輸出:
List <Coffee> unite = <UnitedCoffee>[
UnitedCoffe(shopMenuTitle: 'Matcha', shopTitle: 'Dunkin doghnuts B),
]
當我試圖解決這個問題時,我做了類似的事情,但在這種情況下,兩個數組應該具有相同的大小,如果第一個數組中的某些內容發生變化,我應該在另一個數組中發生相同的事情。
final List<Coffee> coffee = uniteCoffee(coffeeShop, coffeeMenu);
print(coffee);
print(coffee[1].menu.shopMenuTitle);
print(coffee[1].shop.shopTitle);
}
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;
}
另外我有一個問題^ 如果我使用 Future Provider,在這種情況下我該如何解決這個問題?
這是一個僅當將 coffeeShop 與 coffeeMenu 聯合的條件是 mrId 時才有效的示例,當您在另一個內部使用循環時,數組大小不會有問題。
List<Coffee> uniteCoffee(List<CoffeeShop> coffeeShopList, List<CoffeeShopMenu> coffeeMenuList){
List<Coffee> temp = <Coffee>[];
for(CoffeeShop coffeeShop in coffeeShopList) {
for(CoffeeShopMenu coffeeMenu in coffeeMenuList){
if(coffeeShop.mrId == coffeeMenu.mrId) {
temp.add(Coffee(coffeeShop[i], coffeeMenu[i]));
}
}
}
return temp;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.