es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Anular el método equals en los archivos generados por protobuf en Flutter.

Estoy usando protocol buffers en flutter. Tengo varios objetos, uno de ellos es:

message LogTag {
   string name = 1;
   int32 color = 2;
   int32 icon = 3; 
}

He generado los archivos dart necesarios utilizando el compilador protoc. Pero, lo que quiero es que su método equals verifique solo el campo name para comparar 2 objetos LogTag en mi proyecto.

¿Cómo puedo hacer esto?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para personalizar el método equals de un objeto LogTag generado por el compilador protoc, puedes crear una clase parcial LogTag y sobrescribir el método operator == para comparar únicamente el campo name de dos objetos LogTag. Aquí tienes un ejemplo:

    import 'generated/log_tag.pb.dart';
    
    // Crea una clase parcial LogTag
    class LogTag {
      // Sobrescribe el operador ==
      @override
      bool operator ==(other) {
        if (other is LogTag) {
          return name == other.name;
        }
        return false;
      }
    }
    
    // Ahora puedes usar esta clase LogTag para comparar dos objetos LogTag solo por el nombre
    LogTag tag1 = LogTag()
      ..name = "Tag 1"
      ..color = 0xFF0000
      ..icon = Icons.close.codePoint;
    
    LogTag tag2 = LogTag()
      ..name = "Tag 1"
      ..color = 0x00FF00
      ..icon = Icons.check.codePoint;
    
    print(tag1 == tag2); // true
    

    En este ejemplo, creamos una clase parcial LogTag y sobrescribimos el operador == para comparar únicamente el campo name de dos objetos LogTag. Ahora puedes usar esta clase LogTag personalizada para comparar objetos LogTag en tu proyecto.

Comments are closed.