作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有Philips Hue灯,我希望能够使用Dart和Flutter更改颜色。我曾尝试使用名为 hue_dart
的库,但是当我将其作为Dart文件运行时,它只能控制一个灯,并且每次都必须单击Bridge上的按钮。
这是我的代码:
import 'package:http/http.dart';
import 'package:hue_dart/hue_dart.dart';
main(List<String> arguments) async {
final client = Client();
final discovery = BridgeDiscovery(client);
List<DiscoveryResult> discoverResults = await discovery.automatic();
final discoveryResult = discoverResults.first;
var bridge = Bridge(client, discoveryResult.ipAddress);
final whiteListItem = await bridge.createUser('dart_hue#example');
bridge.username = whiteListItem.username;
List<Light> lights = await bridge.lights();
final light = lights.first.changeColor(red: 1.0, green: 0, blue: 1.0);
LightState state = lightStateForColorOnly(light);
state = state.rebuild(
(s) => s
..on = true
..brightness = 10,
);
await bridge.updateLightState(light.rebuild(
(l) => l..state = state.toBuilder(),
));
}
我将如何使用户持久化?而且可以控制一系列灯光的,而不仅仅是返回的第一个灯光?
最佳答案
创建每次需要物理授权的用户时,每次都必须单击“桥接”按钮。打印创建的用户名以显示网桥已创建的随机生成的用户名。
final whiteListItem = await bridge.createUser('dart_hue#example');
print(whiteListItem);
bridge.username = whiteListItem.username;
然后,您可以摆脱createUser步骤,并使用该随机字符串作为用户名,因为该用户名现在是Bridge上的授权用户。
//final whiteListItem = await bridge.createUser('dart_hue#example');
bridge.username = 'the printed value'
至于控制一个光源方面,您只不过使用
lights.first
更改了从GET返回的第一个光源的状态。我没有尝试过,但是反复进行将是一个不错的下一步:
Set<Light> set = Set.from(lights);
set.forEach((element) =>
changeState(element)
);
关于flutter - 我正在尝试制作一个 flutter 的应用程序来控制我的Philips Hue灯,但是hue_dart遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61508371/
我是一名优秀的程序员,十分优秀!