我想通过go_router传递一个可选的List参数。
这是我的类与一个可选的List<int>
参数:
class Loading extends StatefulWidget {
List<int>? genres;
Loading({Key? key, this.genres}) : super(key: key);
@override
_LoadingState createState() => _LoadingState();
}
和路由器:
final GoRouter _router = GoRouter(routes: [
GoRoute(name: 'loading', path: '/', builder: (context, state) {
List<int> genres = state.extra as List;
return Loading(genres: genres);
},
),
...
]);
但是它不起作用。我得到这个错误信息:
类型为'List
'的值不能赋值给变量类型"List<int>"。>
我怎样才能解决这个问题?
尝试将state.extra
属性转换为List<int>
。
final GoRouter _router = GoRouter(routes: [
GoRoute(name: 'loading', path: '/', builder: (context, state) {
List<int> genres = state.extra as List<int>? ?? [];
return Loading(genres: genres);
},
),
]);
您可以使用mapper为pars数据,如果确保state.extra
或list<int>
final GoRouter _router = GoRouter(routes: [
GoRoute(name: 'loading', path: '/', builder: (context, state) {
//This is a mapper
List<dynamic> temp = state.extra as List<dynamic>;
List<int> genres = temp.map((item) => item as int).toList();
return Loading(genres: genres);
},
),
...
]);