【发布时间】:2020-10-27 00:09:47
【问题描述】:
当接收到数据库中的新数据时, 即使应用程序关闭或在后台,是否可以在移动主屏幕上发出警报?
在下面的代码中,我收到了一个呼叫列表。每当有新来电时,我想提醒用户。
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
centerTitle: true,
elevation: 0,
backgroundColor: Colors.orangeAccent,
title: Text("Chamados"),
),
body: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
SizedBox(
height: 10,
),
Expanded(
child: FutureBuilder(
future: getChamados(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return new Center(
child: CircularProgressIndicator(),
);
} else if (snapshot.data.length == 0 || tid == null || tid == "") {
return new Center(
child: Text(
'Nenhum Chamado.',
style: TextStyle(color: Colors.grey),
),
);
} else {
return ListView.builder(
shrinkWrap: true,
itemCount: snapshot.data.length,
itemBuilder: (context, index) {
return Card(
elevation: 8.0,
margin: new EdgeInsets.symmetric(
horizontal: 6.0, vertical: 5.0),
child: Container(
decoration:
BoxDecoration(color: Color(0xFF00aacb)),
child: ListTile(
contentPadding: EdgeInsets.symmetric(
horizontal: 15.0, vertical: 1.0),
// leading: Container(
// padding: EdgeInsets.only(right: 12.0),
// decoration: new BoxDecoration(
// border: new Border(
// right: new BorderSide(
// width: 2.0,
// color: Colors.white))),
// child: Icon(Icons.chat_bubble,
// color: Colors.white),
// ),
title: Row(
children: <Widget>[
Text(
'Apoio solicitado',
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold),
),
Spacer(),
Text(
'ID: ' +
snapshot.data[index].data['tid']
.toString(),
style: TextStyle(color: Colors.white)),
],
),
subtitle: Row(
children: <Widget>[
Text(
nome.toString(),
style: TextStyle(color: Colors.white)),
Spacer(),
Text(
snapshot.data[index].data['dateTime']
.toString(),
style: TextStyle(color: Colors.white)),
],
),
trailing: IconButton(
icon: Icon(
Icons.keyboard_arrow_right,
color: Colors.white,
size: 28,
),
onPressed: () {
String titulo = "Apoio solicitado";
String conteudo =
snapshot.data[index].data['sinal'].toString() == "A"
? "O botão localizado no console foi pressionado. Data e hora: "+snapshot.data[index].data['dateTime'].toString()
:(snapshot.data[index].data['sinal'].toString() == "B"
? "O botão localizado no banco traseiro, lado esquerdo, foi pressionado. Data e hora: "+snapshot.data[index].data['dateTime'].toString()
:(snapshot.data[index].data['sinal'].toString() == "C"
? "O botão localizado no banco traseiro, lado direito, foi pressionado. Data e hora: "+snapshot.data[index].data['dateTime'].toString()
:(snapshot.data[index].data['sinal'].toString() == "D"
? "O botão localizado no porta-malas foi pressionado. Data e hora: "+snapshot.data[index].data['dateTime'].toString() : "")));
alertDialog(context, titulo, conteudo);
},
),
),
));
});
}
},
))
]),
);
}
我尝试使用推送通知,但没有成功。
【问题讨论】:
标签: flutter google-cloud-firestore