我有一個MaterialPageRoute串列,我為每個路線傳遞了一個GridView.count()來裝載。當我從這些MaterialPageRoute中的一個移動到后面并在相同的地方重復時,失敗就發生了,它向我拋出了一個例外:
。
**════════ Exception caught by gesture ═══════════════════════════════════════════
以下斷言被拋出同時處理一個手勢。
'package:flutter/src/widgets/navigator.dart'。失敗的斷言:行4523位置12。'entry.route._navigator == null'。是不是真.**。
這個是我的GridView。
GridView menuGrid(BuildContext context, List< MaterialPageRoute> lista,
int columnas, int border) {
return GridView.count(
crossAxisCount: columnas,
padding: const EdgeInsets.all(20) 。
crossAxisSpacing: 10,
mainAxisSpacing: 10,
children: <Widget>[
..._listado(context, lista, border),
],
);
}
這就是清單:
List< Widget> _listado(
BuildContext context, List<MaterialPageRoute> lista) {
List<Widget> _listaWidget = [] 。
lista.forEach((element) {
_listaWidget.add(GestureDetector(
onTap: () {
Navigator.push(context, element);
},
孩子。容器(
padding: const EdgeInsets.all(5) 。
孩子。容器(
padding: const EdgeInsets.all(8) 。
裝飾。BoxDecoration(
影像。裝飾影像(
影像。Image.asset('assets/images/image1.png').image。
fit: BoxFit.cover。
),
邊界。border.all(
color: Colors.white,
width: 2,
),
borderRadius: new BorderRadius.only(
右上角。const Radius.round(20.0)。
右下角。const Radius.circular(20.0)。
topLeft: const Radius.circular(20.0)。
bottomLeft: const Radius.circular(20.0)。
),
boxShadow: [
BoxShadow(
color: Colors.white.withOpacity(0.5)。
spreadRadius: 1,
blurRadius: 3。
偏移。偏移量(
4,
4,
), //改變陰影的位置。
),
],
),
)),
));
});
return _listaWidget。
}
例子的清單:
List<MaterialPageRoute> lista= [
MaterialPageRoute(builder: (_) => Page1())。)
MaterialPageRoute(builder: (_) => Page2())。
];
uj5u.com熱心網友回復:
我找到了解決方案。我創建了一個抽象的類來呼叫我的導航物件:
abstract class ElementoNavegacion{
影像getImagen()。
MaterialPageRoute show()。
}
class ElementoDatos extends ElementoNavegacion{
影像getImagen() {
return getImageWidget("datos") 。
}
MaterialPageRoute show() {
return MaterialPageRoute(builder: (_) => DatosPage())。
}
然后我呼叫-> Navigator.push(context, element[0].show()) 這樣做的原因是實體沒有在記憶體中丟失。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/315686.html
標籤:
