gpt4 book ai didi

dart - 如何在Dart中实现WebUI HTML模板可访问的枚举?

转载 作者:行者123 更新时间:2023-12-03 02:51:54 25 4
gpt4 key购买 nike

我想实现一个枚举:
枚举可见性=可见|隐藏崩溃了

我希望能够在HTML代码中进行设置。有一些魔术使编译器可以将HTML中的字符串属性值解析为1到int, bool(boolean) 值true等。有没有办法让我自己的类可以从字符串中解析?

最佳答案

Dart尚未对枚举有正式支持。我们希望将来添加枚举:http://news.dartlang.org/2013/04/enum-proposal-for-dart.html

同时,这是模拟枚举的常用模式:

class Enum {
final _value;
const Enum._internal(this._value);
toString() => 'Enum.$_value';

static const FOO = const Enum._internal('FOO');
static const BAR = const Enum._internal('BAR');
static const BAZ = const Enum._internal('BAZ');
}

来自 How can I build an enum with Dart?

要创建具有枚举字段的Web UI自定义元素,可以使用setter和getter将字符串(从HTML)转换为枚举。

这样的事情应该起作用:

import 'package:web_ui/web_ui.dart';

class Color {
final _value;
const Color._internal(this._value);
factory Color(String value) {
switch (value) {
case 'RED':
return Color.RED;
case 'BLUE':
return Color.BLUE;
case 'GREEN':
return Color.GREEN;
default:
throw 'not a color';
}
}
toString() => 'Color.$_value';

static const RED = const Color._internal('RED');
static const BLUE = const Color._internal('BLUE');
static const GREEN = const Color._internal('GREEN');
}

class PersonComponent extends WebComponent {
Color favoriteColor;

String get favColor => ((x) => x == null ? null : x._value)(favoriteColor);

void set favColor(String value) {
favoriteColor = new Color(value);
}
}

然后,HTML将是:

<html>
<body>
<element name="x-person" extends="div" constructor="PersonComponent">
<template>
<div>
Favorite Color: <select bind-value="favColor">
<option>RED</option>
<option>GREEN</option>
<option>BLUE</option>
</select>
</div>
<div>
You picked {{favoriteColor}}
</div>
</template>
<script type="application/dart" src="person_component.dart"></script>
</element>
</body>
</html>

关于dart - 如何在Dart中实现WebUI HTML模板可访问的枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16369781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com