Оператор Flutter if-else

#flutter #if-statement

#сбой #оператор if

Вопрос:

{«data»:[{«id»:»32f»,»regionName»:»Korea»,»companyName»:»Machine»,»catDealerCode»:null},{«id»:»cbb»,»regionName»:»Korea»,»companyName»:»KR»,»catDealerCode»:null},{«id»:»b6125b0e-5ec9″,,»regionName»:»China»,»companyName»:»CHN»,»catDealerCode»:null}],»code»:0,»message»:null}

У меня есть данные, подобные тем, которые вы видите выше. Я извлекаю данные в соответствии с названием компании. но в некоторых странах нет данных. Я хочу создать регистр if else в этом. но независимо от того, что я делаю, когда говорю element == null, он не принимается. Кто-нибудь знает, где я делаю неправильно? Как я должен создать if else для пустых данных?

   onTap: () async {
        List<Country> country =
            await fetchList(
              snapshot.data.code);
    
   country.forEach((element) {
         if(element.companyName == null){
       print('element is empty');
     }else{
          print('Here ${element.companyName}');
                                        }
         });
            },
  

И вот мои данные из списка стран;

{«data»:[{{«code»:»KR»,»name»:»Korea»,»isActive»:true,»id»:»71″},{«code»:»RU»,»name»:»Rusia»,»isActive»:true,»id»:»3c»},{«code»:»Ch»,»name»:»China»,»isActive»:true,»id»:»86″}],»code»:0,»message»:null}

  class Country {
  String id;
  String companyCode;
  String countryCode;
  String countryId;
  String regionName;
  String companyName;
  Null catDealerCode;

  Country(
      {this.id,
        this.companyCode,
        this.countryCode,
        this.countryId,
        this.regionName,
        this.companyName,
        this.catDealerCode});

  Couuntry.fromJson(Map<String, dynamic> json) {
    id = json['id'];
    companyCode = json['companyCode'];
    countryCode = json['countryCode'];
    countryId = json['countryId'];
    regionName = json['regionName'];
    companyName = json['companyName'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['id'] = this.id;
    data['companyCode'] = this.companyCode;
    data['countryCode'] = this.countryCode;
    data['countryId'] = this.countryId;
    data['regionName'] = this.regionName;
    data['companyName'] = this.companyName;
    return data;
 
  

}
}

Комментарии:

1. Пожалуйста, правильно отформатируйте свой код и сделайте отступы, иначе вам никто не поможет.

2. извините, я здесь новенькая. Я все еще не могу привыкнуть к этому, так ли это более организованно? Я не хотел копировать всю страницу целиком, потому что именно здесь находится соответствующая часть. Иногда я получаю предупреждение типа «расширить описание», когда пишу слишком много кода,

3. Это companyName действительно null или это просто empty string ? Можете ли вы добавить пример, в котором у Company нет companyName ? @kimSoo

4. на самом деле, если нет названия компании, оно не включается в данные

Ответ №1:

Я бы выбрал оператор с нулевым значением:

 onTap: () async {
                              List<Country> country =
                                        await fetchList(
                                            snapshot.data.code);
    
                                      country?.forEach((element) {
                                        if(element?.companyName == null){
                                          print('element is empty');
                                        }else{
                                          print('Here ${element.companyName}');
                                        }
                                      });
                          },
  

Комментарии:

1. Я пробовал это решение, но оно не работает :/. Он печатается как «Здесь ….», но при нажатии на пустой элемент он не говорит «элемент пуст»

2. Я извлекаю его из других данных, но я добавил его в свой вопрос

3. Пожалуйста, добавьте свой класс country в свой вопрос.

4. Я добавил свой класс country

5. Я предполагаю, что вы используете пакет json_serializable с параметром null, установленным по умолчанию (что является true), который должен возвращать вам пустую строку для вашего element.companyName when null . Уверен, что вы могли бы сделать if(element?.companyName == null || element?.companyName?.isEmpty) (но мне не очень нравится это решение …)