【发布时间】:2018-12-13 16:24:18
【问题描述】:
我有一个按钮可以启用 GPS。启用 GPS 时,TextField 应填充纬度值。禁用时,用户应该能够输入纬度值。我需要验证用户提供的值(在 -90.0 到 90.0 的范围内)。
类似:
StreamBuilder(
stream: bloc.latitude,
builder: (context, snapshot) {
return TextField(
keyboardType: TextInputType.number,
decoration: new InputDecoration(
hintText: 'Latitude',
labelText: 'Latitude',
errorText: snapshot.error),
onChanged: bloc.onLatitudeChanged,
//enabled: snapshot.hasData,
controller: _latitudeTextController,
);
},
),
我的集团有:
final _latitudeController = BehaviorSubject<String>();
Function(String) get onLatitudeChanged => _latitudeController.sink.add;
Stream<String> get latitude => _latitudeController
.distinct()
.map((l) => double.parse(l))
.transform(validateLatitude) // double -> double
.map((l) => l.toString());
我有很多问题。如果map 失败,我会得到FormatException,但我不知道如何处理。当启用 GPS 时,我的集团也有一个 Stream<double> currentLatitude(否则它会吐出 Observable.empty()),我不太清楚如何在其中工作(可能是合并?我认为启用 GPS 时我应该只是能够在控制器中设置文本。
【问题讨论】: