mirror of
https://mirror.ghproxy.com/https://github.com/StarCitizenToolBox/app.git
synced 2024-12-23 06:33:43 +08:00
[Party Room] 房间类型相关
This commit is contained in:
parent
7240878148
commit
ab6e660ea0
@ -74,7 +74,12 @@ class BaseUIModel extends ChangeNotifier {
|
||||
notifyListeners();
|
||||
return null;
|
||||
}
|
||||
if (!noAlert) showToast(context!, errorOverride ?? errorMsg);
|
||||
if (!noAlert) {
|
||||
showToast(context!, errorOverride ?? errorMsg,
|
||||
constraints: BoxConstraints(
|
||||
maxWidth: MediaQuery.of(context!).size.width * .6,
|
||||
),title: "出现错误!");
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -12,9 +12,9 @@ void dPrint(src) {
|
||||
}
|
||||
|
||||
Future showToast(BuildContext context, String msg,
|
||||
{BoxConstraints? constraints}) async {
|
||||
{BoxConstraints? constraints, String? title}) async {
|
||||
return showBaseDialog(context,
|
||||
title: "提示",
|
||||
title: title ?? "提示",
|
||||
content: Text(msg),
|
||||
actions: [
|
||||
FilledButton(
|
||||
|
@ -14,6 +14,40 @@ import 'dart:core' as $core;
|
||||
import 'package:fixnum/fixnum.dart' as $fixnum;
|
||||
import 'package:protobuf/protobuf.dart' as $pb;
|
||||
|
||||
export 'index.pbenum.dart';
|
||||
|
||||
class Empty extends $pb.GeneratedMessage {
|
||||
factory Empty() => create();
|
||||
Empty._() : super();
|
||||
factory Empty.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
|
||||
factory Empty.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
|
||||
|
||||
static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Empty', createEmptyInstance: create)
|
||||
..hasRequiredFields = false
|
||||
;
|
||||
|
||||
@$core.Deprecated(
|
||||
'Using this can add significant overhead to your binary. '
|
||||
'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
|
||||
'Will be removed in next major version')
|
||||
Empty clone() => Empty()..mergeFromMessage(this);
|
||||
@$core.Deprecated(
|
||||
'Using this can add significant overhead to your binary. '
|
||||
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
|
||||
'Will be removed in next major version')
|
||||
Empty copyWith(void Function(Empty) updates) => super.copyWith((message) => updates(message as Empty)) as Empty;
|
||||
|
||||
$pb.BuilderInfo get info_ => _i;
|
||||
|
||||
@$core.pragma('dart2js:noInline')
|
||||
static Empty create() => Empty._();
|
||||
Empty createEmptyInstance() => create();
|
||||
static $pb.PbList<Empty> createRepeated() => $pb.PbList<Empty>();
|
||||
@$core.pragma('dart2js:noInline')
|
||||
static Empty getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Empty>(create);
|
||||
static Empty? _defaultInstance;
|
||||
}
|
||||
|
||||
class PingData extends $pb.GeneratedMessage {
|
||||
factory PingData({
|
||||
$core.String? data,
|
||||
@ -92,6 +126,214 @@ class PingData extends $pb.GeneratedMessage {
|
||||
void clearServerVersion() => clearField(3);
|
||||
}
|
||||
|
||||
class RoomTypesData extends $pb.GeneratedMessage {
|
||||
factory RoomTypesData({
|
||||
$core.Iterable<RoomType>? roomTypes,
|
||||
}) {
|
||||
final $result = create();
|
||||
if (roomTypes != null) {
|
||||
$result.roomTypes.addAll(roomTypes);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
RoomTypesData._() : super();
|
||||
factory RoomTypesData.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
|
||||
factory RoomTypesData.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
|
||||
|
||||
static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'RoomTypesData', createEmptyInstance: create)
|
||||
..pc<RoomType>(1, _omitFieldNames ? '' : 'roomTypes', $pb.PbFieldType.PM, protoName: 'roomTypes', subBuilder: RoomType.create)
|
||||
..hasRequiredFields = false
|
||||
;
|
||||
|
||||
@$core.Deprecated(
|
||||
'Using this can add significant overhead to your binary. '
|
||||
'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
|
||||
'Will be removed in next major version')
|
||||
RoomTypesData clone() => RoomTypesData()..mergeFromMessage(this);
|
||||
@$core.Deprecated(
|
||||
'Using this can add significant overhead to your binary. '
|
||||
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
|
||||
'Will be removed in next major version')
|
||||
RoomTypesData copyWith(void Function(RoomTypesData) updates) => super.copyWith((message) => updates(message as RoomTypesData)) as RoomTypesData;
|
||||
|
||||
$pb.BuilderInfo get info_ => _i;
|
||||
|
||||
@$core.pragma('dart2js:noInline')
|
||||
static RoomTypesData create() => RoomTypesData._();
|
||||
RoomTypesData createEmptyInstance() => create();
|
||||
static $pb.PbList<RoomTypesData> createRepeated() => $pb.PbList<RoomTypesData>();
|
||||
@$core.pragma('dart2js:noInline')
|
||||
static RoomTypesData getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<RoomTypesData>(create);
|
||||
static RoomTypesData? _defaultInstance;
|
||||
|
||||
@$pb.TagNumber(1)
|
||||
$core.List<RoomType> get roomTypes => $_getList(0);
|
||||
}
|
||||
|
||||
class RoomType extends $pb.GeneratedMessage {
|
||||
factory RoomType({
|
||||
$core.String? id,
|
||||
$core.String? name,
|
||||
$core.String? icon,
|
||||
$core.String? desc,
|
||||
$core.Iterable<RoomSubtype>? subTypes,
|
||||
}) {
|
||||
final $result = create();
|
||||
if (id != null) {
|
||||
$result.id = id;
|
||||
}
|
||||
if (name != null) {
|
||||
$result.name = name;
|
||||
}
|
||||
if (icon != null) {
|
||||
$result.icon = icon;
|
||||
}
|
||||
if (desc != null) {
|
||||
$result.desc = desc;
|
||||
}
|
||||
if (subTypes != null) {
|
||||
$result.subTypes.addAll(subTypes);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
RoomType._() : super();
|
||||
factory RoomType.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
|
||||
factory RoomType.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
|
||||
|
||||
static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'RoomType', createEmptyInstance: create)
|
||||
..aOS(1, _omitFieldNames ? '' : 'id')
|
||||
..aOS(2, _omitFieldNames ? '' : 'name')
|
||||
..aOS(3, _omitFieldNames ? '' : 'icon')
|
||||
..aOS(4, _omitFieldNames ? '' : 'desc')
|
||||
..pc<RoomSubtype>(5, _omitFieldNames ? '' : 'subTypes', $pb.PbFieldType.PM, protoName: 'subTypes', subBuilder: RoomSubtype.create)
|
||||
..hasRequiredFields = false
|
||||
;
|
||||
|
||||
@$core.Deprecated(
|
||||
'Using this can add significant overhead to your binary. '
|
||||
'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
|
||||
'Will be removed in next major version')
|
||||
RoomType clone() => RoomType()..mergeFromMessage(this);
|
||||
@$core.Deprecated(
|
||||
'Using this can add significant overhead to your binary. '
|
||||
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
|
||||
'Will be removed in next major version')
|
||||
RoomType copyWith(void Function(RoomType) updates) => super.copyWith((message) => updates(message as RoomType)) as RoomType;
|
||||
|
||||
$pb.BuilderInfo get info_ => _i;
|
||||
|
||||
@$core.pragma('dart2js:noInline')
|
||||
static RoomType create() => RoomType._();
|
||||
RoomType createEmptyInstance() => create();
|
||||
static $pb.PbList<RoomType> createRepeated() => $pb.PbList<RoomType>();
|
||||
@$core.pragma('dart2js:noInline')
|
||||
static RoomType getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<RoomType>(create);
|
||||
static RoomType? _defaultInstance;
|
||||
|
||||
@$pb.TagNumber(1)
|
||||
$core.String get id => $_getSZ(0);
|
||||
@$pb.TagNumber(1)
|
||||
set id($core.String v) { $_setString(0, v); }
|
||||
@$pb.TagNumber(1)
|
||||
$core.bool hasId() => $_has(0);
|
||||
@$pb.TagNumber(1)
|
||||
void clearId() => clearField(1);
|
||||
|
||||
@$pb.TagNumber(2)
|
||||
$core.String get name => $_getSZ(1);
|
||||
@$pb.TagNumber(2)
|
||||
set name($core.String v) { $_setString(1, v); }
|
||||
@$pb.TagNumber(2)
|
||||
$core.bool hasName() => $_has(1);
|
||||
@$pb.TagNumber(2)
|
||||
void clearName() => clearField(2);
|
||||
|
||||
@$pb.TagNumber(3)
|
||||
$core.String get icon => $_getSZ(2);
|
||||
@$pb.TagNumber(3)
|
||||
set icon($core.String v) { $_setString(2, v); }
|
||||
@$pb.TagNumber(3)
|
||||
$core.bool hasIcon() => $_has(2);
|
||||
@$pb.TagNumber(3)
|
||||
void clearIcon() => clearField(3);
|
||||
|
||||
@$pb.TagNumber(4)
|
||||
$core.String get desc => $_getSZ(3);
|
||||
@$pb.TagNumber(4)
|
||||
set desc($core.String v) { $_setString(3, v); }
|
||||
@$pb.TagNumber(4)
|
||||
$core.bool hasDesc() => $_has(3);
|
||||
@$pb.TagNumber(4)
|
||||
void clearDesc() => clearField(4);
|
||||
|
||||
@$pb.TagNumber(5)
|
||||
$core.List<RoomSubtype> get subTypes => $_getList(4);
|
||||
}
|
||||
|
||||
class RoomSubtype extends $pb.GeneratedMessage {
|
||||
factory RoomSubtype({
|
||||
$core.String? id,
|
||||
$core.String? name,
|
||||
}) {
|
||||
final $result = create();
|
||||
if (id != null) {
|
||||
$result.id = id;
|
||||
}
|
||||
if (name != null) {
|
||||
$result.name = name;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
RoomSubtype._() : super();
|
||||
factory RoomSubtype.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
|
||||
factory RoomSubtype.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
|
||||
|
||||
static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'RoomSubtype', createEmptyInstance: create)
|
||||
..aOS(1, _omitFieldNames ? '' : 'id')
|
||||
..aOS(2, _omitFieldNames ? '' : 'name')
|
||||
..hasRequiredFields = false
|
||||
;
|
||||
|
||||
@$core.Deprecated(
|
||||
'Using this can add significant overhead to your binary. '
|
||||
'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
|
||||
'Will be removed in next major version')
|
||||
RoomSubtype clone() => RoomSubtype()..mergeFromMessage(this);
|
||||
@$core.Deprecated(
|
||||
'Using this can add significant overhead to your binary. '
|
||||
'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
|
||||
'Will be removed in next major version')
|
||||
RoomSubtype copyWith(void Function(RoomSubtype) updates) => super.copyWith((message) => updates(message as RoomSubtype)) as RoomSubtype;
|
||||
|
||||
$pb.BuilderInfo get info_ => _i;
|
||||
|
||||
@$core.pragma('dart2js:noInline')
|
||||
static RoomSubtype create() => RoomSubtype._();
|
||||
RoomSubtype createEmptyInstance() => create();
|
||||
static $pb.PbList<RoomSubtype> createRepeated() => $pb.PbList<RoomSubtype>();
|
||||
@$core.pragma('dart2js:noInline')
|
||||
static RoomSubtype getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<RoomSubtype>(create);
|
||||
static RoomSubtype? _defaultInstance;
|
||||
|
||||
@$pb.TagNumber(1)
|
||||
$core.String get id => $_getSZ(0);
|
||||
@$pb.TagNumber(1)
|
||||
set id($core.String v) { $_setString(0, v); }
|
||||
@$pb.TagNumber(1)
|
||||
$core.bool hasId() => $_has(0);
|
||||
@$pb.TagNumber(1)
|
||||
void clearId() => clearField(1);
|
||||
|
||||
@$pb.TagNumber(2)
|
||||
$core.String get name => $_getSZ(1);
|
||||
@$pb.TagNumber(2)
|
||||
set name($core.String v) { $_setString(1, v); }
|
||||
@$pb.TagNumber(2)
|
||||
$core.bool hasName() => $_has(1);
|
||||
@$pb.TagNumber(2)
|
||||
void clearName() => clearField(2);
|
||||
}
|
||||
|
||||
|
||||
const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names');
|
||||
const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names');
|
||||
|
@ -9,3 +9,55 @@
|
||||
// ignore_for_file: non_constant_identifier_names, prefer_final_fields
|
||||
// ignore_for_file: unnecessary_import, unnecessary_this, unused_import
|
||||
|
||||
import 'dart:core' as $core;
|
||||
|
||||
import 'package:protobuf/protobuf.dart' as $pb;
|
||||
|
||||
class RoomStatus extends $pb.ProtobufEnum {
|
||||
static const RoomStatus All = RoomStatus._(0, _omitEnumNames ? '' : 'All');
|
||||
static const RoomStatus Open = RoomStatus._(1, _omitEnumNames ? '' : 'Open');
|
||||
static const RoomStatus Private = RoomStatus._(2, _omitEnumNames ? '' : 'Private');
|
||||
static const RoomStatus Full = RoomStatus._(3, _omitEnumNames ? '' : 'Full');
|
||||
static const RoomStatus Closed = RoomStatus._(4, _omitEnumNames ? '' : 'Closed');
|
||||
static const RoomStatus WillOffline = RoomStatus._(5, _omitEnumNames ? '' : 'WillOffline');
|
||||
static const RoomStatus Offline = RoomStatus._(6, _omitEnumNames ? '' : 'Offline');
|
||||
|
||||
static const $core.List<RoomStatus> values = <RoomStatus> [
|
||||
All,
|
||||
Open,
|
||||
Private,
|
||||
Full,
|
||||
Closed,
|
||||
WillOffline,
|
||||
Offline,
|
||||
];
|
||||
|
||||
static final $core.Map<$core.int, RoomStatus> _byValue = $pb.ProtobufEnum.initByValue(values);
|
||||
static RoomStatus? valueOf($core.int value) => _byValue[value];
|
||||
|
||||
const RoomStatus._($core.int v, $core.String n) : super(v, n);
|
||||
}
|
||||
|
||||
class RoomSortType extends $pb.ProtobufEnum {
|
||||
static const RoomSortType Default = RoomSortType._(0, _omitEnumNames ? '' : 'Default');
|
||||
static const RoomSortType MostPlayerNumber = RoomSortType._(1, _omitEnumNames ? '' : 'MostPlayerNumber');
|
||||
static const RoomSortType MinimumPlayerNumber = RoomSortType._(2, _omitEnumNames ? '' : 'MinimumPlayerNumber');
|
||||
static const RoomSortType RecentlyCreated = RoomSortType._(3, _omitEnumNames ? '' : 'RecentlyCreated');
|
||||
static const RoomSortType OldestCreated = RoomSortType._(4, _omitEnumNames ? '' : 'OldestCreated');
|
||||
|
||||
static const $core.List<RoomSortType> values = <RoomSortType> [
|
||||
Default,
|
||||
MostPlayerNumber,
|
||||
MinimumPlayerNumber,
|
||||
RecentlyCreated,
|
||||
OldestCreated,
|
||||
];
|
||||
|
||||
static final $core.Map<$core.int, RoomSortType> _byValue = $pb.ProtobufEnum.initByValue(values);
|
||||
static RoomSortType? valueOf($core.int value) => _byValue[value];
|
||||
|
||||
const RoomSortType._($core.int v, $core.String n) : super(v, n);
|
||||
}
|
||||
|
||||
|
||||
const _omitEnumNames = $core.bool.fromEnvironment('protobuf.omit_enum_names');
|
||||
|
@ -25,6 +25,10 @@ class IndexServiceClient extends $grpc.Client {
|
||||
'/IndexService/PingServer',
|
||||
($0.PingData value) => value.writeToBuffer(),
|
||||
($core.List<$core.int> value) => $0.PingData.fromBuffer(value));
|
||||
static final _$getRoomTypes = $grpc.ClientMethod<$0.Empty, $0.RoomTypesData>(
|
||||
'/IndexService/GetRoomTypes',
|
||||
($0.Empty value) => value.writeToBuffer(),
|
||||
($core.List<$core.int> value) => $0.RoomTypesData.fromBuffer(value));
|
||||
|
||||
IndexServiceClient($grpc.ClientChannel channel,
|
||||
{$grpc.CallOptions? options,
|
||||
@ -35,6 +39,10 @@ class IndexServiceClient extends $grpc.Client {
|
||||
$grpc.ResponseFuture<$0.PingData> pingServer($0.PingData request, {$grpc.CallOptions? options}) {
|
||||
return $createUnaryCall(_$pingServer, request, options: options);
|
||||
}
|
||||
|
||||
$grpc.ResponseFuture<$0.RoomTypesData> getRoomTypes($0.Empty request, {$grpc.CallOptions? options}) {
|
||||
return $createUnaryCall(_$getRoomTypes, request, options: options);
|
||||
}
|
||||
}
|
||||
|
||||
@$pb.GrpcServiceName('IndexService')
|
||||
@ -49,11 +57,23 @@ abstract class IndexServiceBase extends $grpc.Service {
|
||||
false,
|
||||
($core.List<$core.int> value) => $0.PingData.fromBuffer(value),
|
||||
($0.PingData value) => value.writeToBuffer()));
|
||||
$addMethod($grpc.ServiceMethod<$0.Empty, $0.RoomTypesData>(
|
||||
'GetRoomTypes',
|
||||
getRoomTypes_Pre,
|
||||
false,
|
||||
false,
|
||||
($core.List<$core.int> value) => $0.Empty.fromBuffer(value),
|
||||
($0.RoomTypesData value) => value.writeToBuffer()));
|
||||
}
|
||||
|
||||
$async.Future<$0.PingData> pingServer_Pre($grpc.ServiceCall call, $async.Future<$0.PingData> request) async {
|
||||
return pingServer(call, await request);
|
||||
}
|
||||
|
||||
$async.Future<$0.PingData> pingServer($grpc.ServiceCall call, $0.PingData request);
|
||||
$async.Future<$0.RoomTypesData> getRoomTypes_Pre($grpc.ServiceCall call, $async.Future<$0.Empty> request) async {
|
||||
return getRoomTypes(call, await request);
|
||||
}
|
||||
|
||||
$async.Future<$0.PingData> pingServer($grpc.ServiceCall call, $0.PingData request);
|
||||
$async.Future<$0.RoomTypesData> getRoomTypes($grpc.ServiceCall call, $0.Empty request);
|
||||
}
|
||||
|
@ -13,6 +13,52 @@ import 'dart:convert' as $convert;
|
||||
import 'dart:core' as $core;
|
||||
import 'dart:typed_data' as $typed_data;
|
||||
|
||||
@$core.Deprecated('Use roomStatusDescriptor instead')
|
||||
const RoomStatus$json = {
|
||||
'1': 'RoomStatus',
|
||||
'2': [
|
||||
{'1': 'All', '2': 0},
|
||||
{'1': 'Open', '2': 1},
|
||||
{'1': 'Private', '2': 2},
|
||||
{'1': 'Full', '2': 3},
|
||||
{'1': 'Closed', '2': 4},
|
||||
{'1': 'WillOffline', '2': 5},
|
||||
{'1': 'Offline', '2': 6},
|
||||
],
|
||||
};
|
||||
|
||||
/// Descriptor for `RoomStatus`. Decode as a `google.protobuf.EnumDescriptorProto`.
|
||||
final $typed_data.Uint8List roomStatusDescriptor = $convert.base64Decode(
|
||||
'CgpSb29tU3RhdHVzEgcKA0FsbBAAEggKBE9wZW4QARILCgdQcml2YXRlEAISCAoERnVsbBADEg'
|
||||
'oKBkNsb3NlZBAEEg8KC1dpbGxPZmZsaW5lEAUSCwoHT2ZmbGluZRAG');
|
||||
|
||||
@$core.Deprecated('Use roomSortTypeDescriptor instead')
|
||||
const RoomSortType$json = {
|
||||
'1': 'RoomSortType',
|
||||
'2': [
|
||||
{'1': 'Default', '2': 0},
|
||||
{'1': 'MostPlayerNumber', '2': 1},
|
||||
{'1': 'MinimumPlayerNumber', '2': 2},
|
||||
{'1': 'RecentlyCreated', '2': 3},
|
||||
{'1': 'OldestCreated', '2': 4},
|
||||
],
|
||||
};
|
||||
|
||||
/// Descriptor for `RoomSortType`. Decode as a `google.protobuf.EnumDescriptorProto`.
|
||||
final $typed_data.Uint8List roomSortTypeDescriptor = $convert.base64Decode(
|
||||
'CgxSb29tU29ydFR5cGUSCwoHRGVmYXVsdBAAEhQKEE1vc3RQbGF5ZXJOdW1iZXIQARIXChNNaW'
|
||||
'5pbXVtUGxheWVyTnVtYmVyEAISEwoPUmVjZW50bHlDcmVhdGVkEAMSEQoNT2xkZXN0Q3JlYXRl'
|
||||
'ZBAE');
|
||||
|
||||
@$core.Deprecated('Use emptyDescriptor instead')
|
||||
const Empty$json = {
|
||||
'1': 'Empty',
|
||||
};
|
||||
|
||||
/// Descriptor for `Empty`. Decode as a `google.protobuf.DescriptorProto`.
|
||||
final $typed_data.Uint8List emptyDescriptor = $convert.base64Decode(
|
||||
'CgVFbXB0eQ==');
|
||||
|
||||
@$core.Deprecated('Use pingDataDescriptor instead')
|
||||
const PingData$json = {
|
||||
'1': 'PingData',
|
||||
@ -28,3 +74,47 @@ final $typed_data.Uint8List pingDataDescriptor = $convert.base64Decode(
|
||||
'CghQaW5nRGF0YRISCgRkYXRhGAEgASgJUgRkYXRhEiQKDWNsaWVudFZlcnNpb24YAiABKBJSDW'
|
||||
'NsaWVudFZlcnNpb24SJAoNc2VydmVyVmVyc2lvbhgDIAEoElINc2VydmVyVmVyc2lvbg==');
|
||||
|
||||
@$core.Deprecated('Use roomTypesDataDescriptor instead')
|
||||
const RoomTypesData$json = {
|
||||
'1': 'RoomTypesData',
|
||||
'2': [
|
||||
{'1': 'roomTypes', '3': 1, '4': 3, '5': 11, '6': '.RoomType', '10': 'roomTypes'},
|
||||
],
|
||||
};
|
||||
|
||||
/// Descriptor for `RoomTypesData`. Decode as a `google.protobuf.DescriptorProto`.
|
||||
final $typed_data.Uint8List roomTypesDataDescriptor = $convert.base64Decode(
|
||||
'Cg1Sb29tVHlwZXNEYXRhEicKCXJvb21UeXBlcxgBIAMoCzIJLlJvb21UeXBlUglyb29tVHlwZX'
|
||||
'M=');
|
||||
|
||||
@$core.Deprecated('Use roomTypeDescriptor instead')
|
||||
const RoomType$json = {
|
||||
'1': 'RoomType',
|
||||
'2': [
|
||||
{'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'},
|
||||
{'1': 'name', '3': 2, '4': 1, '5': 9, '10': 'name'},
|
||||
{'1': 'icon', '3': 3, '4': 1, '5': 9, '10': 'icon'},
|
||||
{'1': 'desc', '3': 4, '4': 1, '5': 9, '10': 'desc'},
|
||||
{'1': 'subTypes', '3': 5, '4': 3, '5': 11, '6': '.RoomSubtype', '10': 'subTypes'},
|
||||
],
|
||||
};
|
||||
|
||||
/// Descriptor for `RoomType`. Decode as a `google.protobuf.DescriptorProto`.
|
||||
final $typed_data.Uint8List roomTypeDescriptor = $convert.base64Decode(
|
||||
'CghSb29tVHlwZRIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZRISCgRpY29uGA'
|
||||
'MgASgJUgRpY29uEhIKBGRlc2MYBCABKAlSBGRlc2MSKAoIc3ViVHlwZXMYBSADKAsyDC5Sb29t'
|
||||
'U3VidHlwZVIIc3ViVHlwZXM=');
|
||||
|
||||
@$core.Deprecated('Use roomSubtypeDescriptor instead')
|
||||
const RoomSubtype$json = {
|
||||
'1': 'RoomSubtype',
|
||||
'2': [
|
||||
{'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'},
|
||||
{'1': 'name', '3': 2, '4': 1, '5': 9, '10': 'name'},
|
||||
],
|
||||
};
|
||||
|
||||
/// Descriptor for `RoomSubtype`. Decode as a `google.protobuf.DescriptorProto`.
|
||||
final $typed_data.Uint8List roomSubtypeDescriptor = $convert.base64Decode(
|
||||
'CgtSb29tU3VidHlwZRIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZQ==');
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
import 'package:fixnum/fixnum.dart';
|
||||
import 'package:grpc/grpc.dart';
|
||||
import 'package:starcitizen_doctor/base/ui.dart';
|
||||
import 'package:starcitizen_doctor/generated/grpc/party_room_server/index.pbgrpc.dart';
|
||||
|
||||
class PartyRoomGrpcServer {
|
||||
@ -20,7 +19,11 @@ class PartyRoomGrpcServer {
|
||||
static Future<PingData> pingServer() async {
|
||||
final r = await _indexService.pingServer(PingData(
|
||||
data: "PING", clientVersion: Int64.parseInt(clientVersion.toString())));
|
||||
dPrint(r.writeToJson());
|
||||
return r;
|
||||
}
|
||||
|
||||
static Future<RoomTypesData> getRoomTypes() async {
|
||||
final r = await _indexService.getRoomTypes(Empty());
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
import 'package:starcitizen_doctor/base/ui.dart';
|
||||
import 'package:starcitizen_doctor/generated/grpc/party_room_server/index.pb.dart';
|
||||
|
||||
import 'party_room_home_ui_model.dart';
|
||||
|
||||
@ -11,8 +12,113 @@ class PartyRoomHomeUI extends BaseUI<PartyRoomHomeUIModel> {
|
||||
child: Text("${model.pingServerMessage}"),
|
||||
);
|
||||
}
|
||||
return Center(
|
||||
child: Text("PartyRoom"),
|
||||
if (model.roomTypes == null) return makeLoading(context);
|
||||
return Column(
|
||||
children: [
|
||||
makeHeader(context, model),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget makeHeader(BuildContext context, PartyRoomHomeUIModel model) {
|
||||
final subTypes = model.getCurRoomSubTypes();
|
||||
return Container(
|
||||
padding: const EdgeInsets.only(left: 24, right: 24, top: 16, bottom: 16),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
const Text("房间类型:"),
|
||||
SizedBox(
|
||||
height: 36,
|
||||
child: ComboBox<RoomType>(
|
||||
value: model.selectedRoomType,
|
||||
items: [
|
||||
for (final t in model.roomTypes!.entries)
|
||||
ComboBoxItem(
|
||||
value: t.value,
|
||||
child: Text(t.value.name),
|
||||
)
|
||||
],
|
||||
onChanged: model.onChangeRoomType)),
|
||||
if (subTypes != null) ...[
|
||||
const SizedBox(width: 24),
|
||||
const Text("子类型:"),
|
||||
SizedBox(
|
||||
height: 36,
|
||||
child: ComboBox<RoomSubtype>(
|
||||
value: model.selectedRoomSubType,
|
||||
items: [
|
||||
for (final t in subTypes.entries)
|
||||
ComboBoxItem(
|
||||
value: t.value,
|
||||
child: Text(t.value.name),
|
||||
)
|
||||
],
|
||||
onChanged: model.onChangeRoomSubType)),
|
||||
],
|
||||
const SizedBox(width: 24),
|
||||
const Text("房间状态:"),
|
||||
SizedBox(
|
||||
height: 36,
|
||||
child: ComboBox<RoomStatus>(
|
||||
value: model.selectedStatus,
|
||||
items: [
|
||||
for (final t in model.roomStatus.entries)
|
||||
ComboBoxItem(
|
||||
value: t.key,
|
||||
child: Text(t.value),
|
||||
)
|
||||
],
|
||||
onChanged: model.onChangeRoomStatus)),
|
||||
const SizedBox(width: 24),
|
||||
const Text("排序:"),
|
||||
SizedBox(
|
||||
height: 36,
|
||||
child: ComboBox<RoomSortType>(
|
||||
value: model.selectedSortType,
|
||||
items: [
|
||||
for (final t in model.roomSorts.entries)
|
||||
ComboBoxItem(
|
||||
value: t.key,
|
||||
child: Text(t.value),
|
||||
)
|
||||
],
|
||||
onChanged: model.onChangeRoomSort)),
|
||||
const Spacer(),
|
||||
Button(
|
||||
onPressed: () {},
|
||||
child: const Padding(
|
||||
padding: EdgeInsets.all(6),
|
||||
child: Icon(FluentIcons.refresh),
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 12),
|
||||
Button(
|
||||
onPressed: () {},
|
||||
child: const Padding(
|
||||
padding: EdgeInsets.all(3),
|
||||
child: Row(
|
||||
children: [
|
||||
Icon(FluentIcons.add),
|
||||
SizedBox(width: 6),
|
||||
Text("创建房间")
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(
|
||||
height: 6,
|
||||
),
|
||||
Text(
|
||||
model.selectedRoomType?.desc ?? "",
|
||||
style: TextStyle(fontSize: 13, color: Colors.white.withOpacity(.4)),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -1,9 +1,37 @@
|
||||
import 'package:starcitizen_doctor/base/ui_model.dart';
|
||||
import 'package:starcitizen_doctor/generated/grpc/party_room_server/index.pb.dart';
|
||||
import 'package:starcitizen_doctor/grpc/party_room_server.dart';
|
||||
|
||||
class PartyRoomHomeUIModel extends BaseUIModel {
|
||||
String? pingServerMessage;
|
||||
|
||||
Map<String?, RoomType>? roomTypes;
|
||||
|
||||
RoomType? selectedRoomType;
|
||||
|
||||
RoomSubtype? selectedRoomSubType;
|
||||
|
||||
final roomStatus = <RoomStatus, String>{
|
||||
RoomStatus.All: "全部",
|
||||
RoomStatus.Open: "开启中",
|
||||
RoomStatus.Full: "已满员",
|
||||
RoomStatus.Closed: "已封闭",
|
||||
RoomStatus.WillOffline: "房主离线",
|
||||
RoomStatus.Offline: "已离线",
|
||||
};
|
||||
|
||||
RoomStatus selectedStatus = RoomStatus.All;
|
||||
|
||||
final roomSorts = <RoomSortType, String>{
|
||||
RoomSortType.Default: "默认",
|
||||
RoomSortType.MostPlayerNumber: "最多玩家",
|
||||
RoomSortType.MinimumPlayerNumber: "最少玩家",
|
||||
RoomSortType.RecentlyCreated: "最近创建",
|
||||
RoomSortType.OldestCreated: "最久创建",
|
||||
};
|
||||
|
||||
RoomSortType selectedSortType = RoomSortType.Default;
|
||||
|
||||
@override
|
||||
Future loadData() async {
|
||||
if (pingServerMessage != "") {
|
||||
@ -11,6 +39,7 @@ class PartyRoomHomeUIModel extends BaseUIModel {
|
||||
notifyListeners();
|
||||
}
|
||||
await _pingServer();
|
||||
await _loadTypes();
|
||||
}
|
||||
|
||||
_pingServer() async {
|
||||
@ -26,4 +55,53 @@ class PartyRoomHomeUIModel extends BaseUIModel {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
_loadTypes() async {
|
||||
final r = await handleError(() => PartyRoomGrpcServer.getRoomTypes());
|
||||
if (r == null) return;
|
||||
selectedRoomType =
|
||||
RoomType(id: null, name: "全部", desc: "查看所有类型的房间,寻找一起玩的伙伴。");
|
||||
selectedRoomSubType = RoomSubtype(id: "all", name: "全部");
|
||||
roomTypes = {null: selectedRoomType!};
|
||||
for (var element in r.roomTypes) {
|
||||
roomTypes![element.id] = element;
|
||||
}
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Map<String, RoomSubtype>? getCurRoomSubTypes() {
|
||||
if (selectedRoomType?.subTypes == null) return null;
|
||||
Map<String, RoomSubtype> types = {};
|
||||
for (var element in selectedRoomType!.subTypes) {
|
||||
types[element.id] = element;
|
||||
}
|
||||
if (types.isEmpty) return null;
|
||||
final allSubType = RoomSubtype(id: "all", name: "全部");
|
||||
selectedRoomSubType ??= allSubType;
|
||||
return {"all": allSubType}..addAll(types);
|
||||
}
|
||||
|
||||
void onChangeRoomType(RoomType? value) {
|
||||
selectedRoomType = value;
|
||||
selectedRoomSubType = null;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void onChangeRoomStatus(RoomStatus? value) {
|
||||
if (value == null) return;
|
||||
selectedStatus = value;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void onChangeRoomSort(RoomSortType? value) {
|
||||
if (value == null) return;
|
||||
selectedSortType = value;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void onChangeRoomSubType(RoomSubtype? value) {
|
||||
if (value == null) return;
|
||||
selectedRoomSubType = value;
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user