У меня есть массив маркеров на карте. При нажатии на один из этих маркеров отображается снэк-панель с названием элемента и кнопкой «Ver» (показать).Когда я нажимаю на эту кнопку теоретически перейти на другую страницу.У меня есть этот код.
void onMapCreated(GoogleMapController controller) async {
setState(() {
mapController = controller;
markerMap = Map();
});
for (int i = 0; i < list.length; i++) {
var corte = list[0].keys.elementAt(i).split('/');
Marker marker = await mapController.addMarker(MarkerOptions(
position: LatLng(list[0].values.elementAt(i).latitude,
list[0].values.elementAt(i).longitude),
icon: BitmapDescriptor.defaultMarkerWithHue(
corte[1] == "tipo:0"
? BitmapDescriptor.hueRed
: corte[1] == "tipo:4"
? BitmapDescriptor.hueBlue
: corte[1] == "tipo:3"
? BitmapDescriptor.hueGreen
: corte[1] == "tipo:2"
? BitmapDescriptor.hueYellow
: null)));
markerMap[marker.id] = [corte,i];
}
mapController.onMarkerTapped.add((marker) {
scaffoldKey.currentState.removeCurrentSnackBar();
var objeto = markerMap[marker.id];
final snackBar = SnackBar(
duration: Duration(seconds: 10),
content: Text(objeto[0][0], textAlign: TextAlign.left),
backgroundColor: Colors.red[700],
action: SnackBarAction(
textColor: Colors.white,
label: 'Ver',
onPressed: () {
Navigator.push(
context,
new MaterialPageRoute(
builder: (context) => objeto[0][2] == "tipo:0"
? new MeterDetailsChartPage(
elemento: metersDetails[objeto[1]],
estate: this.estate,
parcela: widget.parcela)
: objeto[0][2] == "tipo:4"
? new ValvePage(
elemento: valvesDetails[objeto[1]],
estate: this.estate,
parcela: widget.parcela)
: objeto[0][2] == "tipo:3"
? new RelePage(
elemento: relesDetails[objeto[1]],
estate: this.estate,
parcela: widget.parcela)
: objeto[0][2] == "tipo:2"
? new SensorPage(
elemento: sensorsDetails[objeto[1]],
estate: this.estate,
parcela: widget.parcela)
: null));
},
));
scaffoldKey.currentState.showSnackBar(snackBar);
});
}
Проблема: Когда я щелкаю в 'Ver', возвращается эта ошибка
I / flutter (11498): ══C ИСКЛЮЧЕНИЕ ЗАДАНО БИБЛИОТЕКОЙ ВИДЖЕТОВ ╞═══════════════════════════════════════════════════════════ I / flutter (11498): было выброшено следующее утверждение. Building (грязный): I / flutter (11498): строитель для маршрута "null" возвратил null.
Я думаю, что проблема с async-await и builder: (контекст) .
У кого-нибудь есть эта проблема и знаете, как ее исправить?
- РЕШЕНИЕ -
Navigator.push(
context,
new MaterialPageRoute(
builder: (context) => objeto[1] == "tipo:0"
? new MeterDetailsChartPage(
elemento: metersDetails.firstWhere((meters)=>meters.id==int.parse(objeto[2])),
estate: this.estate,
parcela: widget.parcela)
: objeto[1] == "tipo:4"
? new ValvePage(
elemento: valvesDetails.firstWhere((valves)=>valves.id==int.parse(objeto[2])),
estate: this.estate,
parcela: widget.parcela)
: objeto[1] == "tipo:3"
? new RelePage(
elemento: relesDetails.firstWhere((reles)=>reles.id==int.parse(objeto[2])),
estate: this.estate,
parcela: widget.parcela)
: objeto[1] == "tipo:2"
? new SensorPage(
elemento: sensorsDetails.firstWhere((sensors)=>sensors.id==int.parse(objeto[2])),
estate: this.estate,
parcela: widget.parcela)
:Navigator.pushNamed(context, EstatesPage.tag)));