Я пытаюсь вернуть виджет, в котором он возвращает контейнер с текстом «Не удается найти устройство», если он не находит указанное c устройство, и если он его находит, в тексте должно быть указано «Устройство нашел!'. Я новичок в флаттере и попытался поиграть с пакетом Flutter Blue, чтобы получить грань asp фреймворка во время работы над проектом. Это мой исходный код:
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Find Devices'),
),
body: RefreshIndicator(
onRefresh: () =>
FlutterBlue.instance.startScan(timeout: Duration(seconds: 4)),
child: SingleChildScrollView(
child: Column(
children: <Widget>[
StreamBuilder<List<ScanResult>>(
stream: FlutterBlue.instance.scanResults,
initialData: [],
builder: (c, snapshot) {
child:
snapshot.data.map((r) => () {
if (r.device.id.toString() == '30:AE:A4:1A:B1:4E') {
return Container(
child: Text('Device found!'),
);
} else {
return Container(
child: Text('Cannot find device'),
);
}
}); //endof map
}),
],
),
),
),
floatingActionButton: StreamBuilder<bool>(
stream: FlutterBlue.instance.isScanning,
initialData: false,
builder: (c, snapshot) {
if (snapshot.data) {
return FloatingActionButton(
child: Icon(Icons.stop),
onPressed: () => FlutterBlue.instance.stopScan(),
backgroundColor: Colors.red,
);
} else {
return FloatingActionButton(
child: Icon(Icons.search),
onPressed: () => FlutterBlue.instance
.startScan(timeout: Duration(seconds: 4)));
}
},
),
);
}
Тем временем я пытался создать виджет, но не уверен, правильно ли я сделал это, потому что у меня все еще та же ошибка.
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Find Devices'),
),
body: RefreshIndicator(
onRefresh: () =>
FlutterBlue.instance.startScan(timeout: Duration(seconds: 4)),
child: SingleChildScrollView(
child: Column(
children: <Widget>[
StreamBuilder<List<ScanResult>>(
stream: FlutterBlue.instance.scanResults,
initialData: [],
builder: (c, snapshot) {
child:
snapshot.data.map((r) => () {
return _buildResult(r);
}); //endof map
}),
],
),
),
),
floatingActionButton: StreamBuilder<bool>(
stream: FlutterBlue.instance.isScanning,
initialData: false,
builder: (c, snapshot) {
if (snapshot.data) {
return FloatingActionButton(
child: Icon(Icons.stop),
onPressed: () => FlutterBlue.instance.stopScan(),
backgroundColor: Colors.red,
);
} else {
return FloatingActionButton(
child: Icon(Icons.search),
onPressed: () => FlutterBlue.instance
.startScan(timeout: Duration(seconds: 4)));
}
},
),
);
}
_buildResult(result) {
if (result.device.id.toString() == mydevice) {
return Container(
child: Text('Device found!'),
);
} else {
return Container(
child: Text('Cannot find device'),
);
}
}