如何通过go_router传递可选的List参数?



我想通过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&gt"。>

我怎样才能解决这个问题?

尝试将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.extralist<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);
},
),
...
]);

最新更新