LateInitializationError: Field 'videoModel' has not been initialized.请问这个报错怎么解决
来源:5-5 Flutter新版路由和导航系统实战(二)

慕先生4316985
2021-12-22
报错截图`import ‘package:bili/page/home_page.dart’;
import ‘package:bili/page/video_detail_page.dart’;
import ‘package:flutter/material.dart’;
import ‘model/video_model.dart’;
void main() {
runApp(BiliApp());
}
class BiliApp extends StatefulWidget {
const BiliApp({Key? key}) : super(key: key);
@override
_BiliAppState createState() => _BiliAppState();
}
class _BiliAppState extends State {
BiliRouterDelegate _routerDelegate = BiliRouterDelegate();
@override
Widget build(BuildContext context) {
//定义route
var widget = Router(
routerDelegate: _routerDelegate,
);
return MaterialApp(
home: widget
);
}
}
class BiliRouterDelegate extends RouterDelegate
with ChangeNotifier,PopNavigatorRouterDelegateMixin{
final GlobalKey navigatorKey;
//为Navigator设置一个key,必要的时候可以通过navigatorKey.currentState来获取到NavigatorState对象
BiliRouterDelegate() : navigatorKey=GlobalKey();
List pages = [];
late VideoModel videoModel;
late BiliRoutePath path;
@override
Widget build(BuildContext context) {
//构建路由栈
pages=[
pageWrap(HomePage(
onJumpToDetail: (videoModel) {
this.videoModel=videoModel;
notifyListeners();
},)),
if(videoModel !=null) pageWrap(VideoDetailPage(videoModel))
];
return Navigator(
key:navigatorKey,
pages: pages,
onPopPage:(route,result){
//在这里可以控制是否可以返回
if(!route.didPop(result)){
return false;
}
return true;
},
);
}
@override
Future setNewRoutePath(BiliRoutePath path) async {
this.path=path;
}
}
class BiliRoutePath{
final String location;
BiliRoutePath.home() : location = “/”;
BiliRoutePath.detail() : location = “/detail”;
}
//创建路由页面
pageWrap(Widget child){
return MaterialPage(key:ValueKey(child.hashCode),child: child);
}
`
1回答
-
在使用videoModel时还没初始化videoModel到自己的,可参考下这块课程源码检查下你的代码实现看是否有出入的地方呢
012021-12-31
相似问题