Изображения не отображаются в GridView, даже если ресурс указан в pubspe c .yaml Flutter - PullRequest
0 голосов
/ 30 января 2020

Я сейчас занимаюсь разработкой приложения для киоска меню, и у меня возникли некоторые проблемы с загрузкой изображений в моем приложении. Я не забудьте указать каждое изображение в моем pubspe c .yaml, но изображения по-прежнему не отображаются. Я получаю следующее сообщение об ошибке: ════════ Exception caught by image resource service ════════════════════════════ Unable to load asset: assets/images/sideDesserts/Dippers with Choco Dip.png ════════════════════════════════════════════════════════════════════════════════

Вот что содержит мой pubspe c .yaml

# To add assets to your application, add an assets section, like this:
  assets:
    - assets/images/
    - assets/images/sideNav/
    #pizza assets
    - assets/images/pizza/Hawaiian Overload.png
    - assets/images/pizza/Bacon Overload.png
    - assets/images/pizza/All In Overload.png
    - assets/images/pizza/All Beef Overload.png
    - assets/images/pizza/hamandCheese.png
    - assets/images/pizza/Peperroni Classic.png
    - assets/images/pizza/veggies_cheesedouble.png
    - assets/images/pizza/Ham Pineapple Classic.png
    - assets/images/pizza/Cheese Classic.png
    #barkada assets
    - assets/images/barkada/Barkada Bundle A.png
    - assets/images/barkada/Barkada Bundle B.png
    - assets/images/barkada/Barkada Bundle C.png

    #chicken assets        
    - assets/images/chicken/1pc Chicken with Rice.png
    - assets/images/chicken/2pc Chicken Meal with Rice.png
    - assets/images/chicken/Chicken Waves.png
    #combo assets
    - assets/images/combo/Carbonara Chicken Combo.png
    - assets/images/combo/Creamy Bacon Carbonara Value Meal.png
    - assets/images/combo/Lasagna Chicken Combo.png
    - assets/images/combo/Lasagna Supreme Value Meal.png
    - assets/images/combo/Meaty Spaghetti Chicken Combo.png
    - assets/images/combo/Meaty Spaghetti Value Meal.png
    - assets/images/combo/Pizza Value Meal A.png
    - assets/images/combo/Pizza Value Meal B.png
    - assets/images/combo/Pizza Value Meal C.png
    - assets/images/combo/Pizza Loaded Combo D.png
    - assets/images/combo/Pizza Loaded Combo E.png
    #drink assets
    - assets/images/drinks/Choco Slush.png
    - assets/images/drinks/coke pitcher.png    
    - assets/images/drinks/Coke Zero.png
    - assets/images/drinks/Coke.png    
    - assets/images/drinks/Coke Glass.png
    - assets/images/drinks/Ice Tea.png
    - assets/images/drinks/Nestea Glass.png
    - assets/images/drinks/Nestea Pitcher.png    
    - assets/images/drinks/PJ Pitcher.png
    - assets/images/drinks/Pj.png
    - assets/images/drinks/Sprite.png    
    #pasta assets
    - assets/images/pasta/Lasagna Supreme Ala Carte.png
    - assets/images/pasta/Meaty Spaghetti Ala Carte.png
    - assets/images/pasta/Creamy Bacon Carbonara Ala Carte.png
    - assets/images/pasta/Lasagna Supreme Large Pan.png
    - assets/images/pasta/Meaty Spaghetti Large Pan.png
    - assets/images/pasta/Creamy Bacon Carbonara Pan.png
    - assets/images/pasta/Lasagna Supreme Pan.png
    - assets/images/pasta/Meaty Spaghetti Regular Pan.png
    - assets/images/pasta/Creamy Bacon Carbonara Regular Pan.png

    #sides Desserts assets
    - assets/images/sideDesserts/Regular Potato Waves.png
    - assets/images/sideDesserts/Cheesy Bread Sticks with Dip.png
    - assets/images/sideDesserts/Dippers with Choco Dip.png
    - assets/images/sideDesserts/Large Potato Waves.png
    - assets/images/sideDesserts/Plain Rice.png                   

    #logos
    - assets/images/Logos/box Logo.png
    - assets/images/Logos/long logo.png

Я также создал пользовательские данные c Список моделей для различные типы меню, например:

class BarkadaData {
  String name;
  String imagePath;
  double price;

  BarkadaData({this.imagePath, this.name, this.price});

  static List<BarkadaData> barkadaList = [
    BarkadaData(
        name: 'Barkada Bundle A (for 3)',
        price: 469.00,
        imagePath: 'assets/images/barkada/Barkada Bundle A.png'),
    BarkadaData(
        name: 'Barkada Bundle B (for 4)',
        price: 569.00,
        imagePath: 'assets/images/barkada/Barkada Bundle B.png'),
    BarkadaData(
        name: 'Barkada Bundle C (for 6)',
        price: 969.00,
        imagePath: 'assets/images/barkada/Barkada Bundle C.png'),
  ];
}

Наконец, я отображаю его с помощью GridView.builder, мое дерево виджетов выглядит так:

                      Container(
                        width: MediaQuery.of(context).size.width * .75,
                        child: GridView.builder(
                          itemCount: barkadaList.length,
                          gridDelegate:
                              SliverGridDelegateWithFixedCrossAxisCount(
                                  crossAxisCount: 3),
                          itemBuilder: (BuildContext context, int index) {
                            return InkWell(
                              onTap: () {
                                print(barkadaList[index].name);
                              },
                              child: Padding(
                                padding: const EdgeInsets.all(8.0),
                                child: Stack(
                                  children: <Widget>[
                                    Container(
                                      width: MediaQuery.of(context).size.width *
                                          .22,
                                      child: Image(
                                        image: AssetImage(
                                            barkadaList[index].imagePath),
                                      ),
                                    ),
                                    Text(
                                      '${barkadaList[index].name}',
                                      style: TextStyle(
                                          fontWeight: FontWeight.w600,
                                          fontSize: 18),
                                      textAlign: TextAlign.center,
                                    )
                                  ],
                                ),
                              ),
                            );
                          },
                        ),
                      )

enter image description here

Как видите, gridview.builder работает, потому что отображаются имена, а не изображения. Любая помощь будет оценена

Ответы [ 2 ]

1 голос
/ 30 января 2020

Переименуйте ваше изображение. Ваше имя изображения имеет пробел. В android изображение не загружается с именем пробела. поэтому измените название вашего изображения Ковши с Choco Dip до Dippers_with_Choco_Dip

0 голосов
/ 30 января 2020

Может быть, исправить ваш pubspe c .yaml вот так.

от

- assets/images/barkada/Barkada Bundle A.png

до

- 'assets/images/barkada/Barkada Bundle A.png'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...