#flutter #dart
Вопрос:
У меня есть класс тела сообщения, у него есть два аргумента: тип сообщения и полезная нагрузка сообщения.
class Message {
final int messageType;
final DynamicType payload;
}
Полезная нагрузка сообщения является динамической, которая также имеет динамический обратный вызов приема. Если тип сообщения 1, а полезная нагрузка-Payload1, иначе, если тип сообщения 2, полезная нагрузка-Payload2.
class Payload1 {
...
}
class Payload2 {
...
}
Future<void> receivePayload(int messageType, DynamicType payload) {
...
}
Как определить динамический тип полезной нагрузки?
Комментарии:
1. Это то, что вы ищете: dart.dev/гиды/язык/языковой тур#универсальные
Ответ №1:
Вы можете использовать либо var, либо полезную нагрузку dynamic. Ex. var;
Или
динамическая полезная нагрузка;
Ответ №2:
во-первых, вы должны создать классы dynamic, payload1 и payload2. пожалуйста, обратите внимание, что два ваших последних занятия должны продлить последнее!
import 'dynamic_type.dart';
class Message {
int messageType;
DynamicType payload;
Message({this.messageType, this.payload});
}
class DynamicType{
}
import 'package:test_app/dynamic_type.dart';
class Payload1 extends DynamicType{
int x;
String y;
Payload1({this.x, this.y});
//etc
}
import 'package:test_app/dynamic_type.dart';
class Payload2 extends DynamicType{
String x;
int y;
Payload2({this.x, this.y});
//etc
}
и теперь вы можете использовать, как показано ниже:
if(your_condition){
message = Message(
messageType: 0,
payload: Payload1(
x: 10,
y: "test"
)
);
} else {
message = Message(
messageType: 0,
payload: Payload2(
x: "another class",
y: 10
)
);
}
На самом деле, вы можете использовать типы «динамический» или «var», но они могут сбивать с толку, если ваши классы слишком сильно различаются!