我创建了一个名为'Session'的类及其提供程序类'SessionProvider',在其中声明并初始化了一个名为'的对象currentSession'。但是不知道为什么我不能访问currentSession的参数,例如名称,树中任何位置的ID(调用它们只需 null ),尽管我已经在主类中将SessionProvider定义为祖先。
这是我的代码:
class Session {
int id;
String name;
Session({int id, String name});
}
class SessionProvider with ChangeNotifier {
Session _dummy_currentSession = Session(id: 1, name: 'Spring-16');
Session get currentSession {
return _dummy_currentSession;
}
}
主类:
void main(List<String> args) {
// debugPaintSizeEnabled = true;
runApp(MyApp());
}
class MyApp extends StatefulWidget {
MyApp({Key key}) : super(key: key);
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
]);
return LayoutBuilder(
builder: (context, constraints) =>
OrientationBuilder(builder: (context, orientation) {
SizeConfig().init(constraints, orientation);
return MultiProvider(
providers: [
ChangeNotifierProvider.value(
value: SessionProvider(),
),
],
child: MaterialApp(
home: LoginPage(),
theme: AppTheme.lightTheme,
),
);
}),
);
}
}
在屏幕上我想访问它的地方:
final sessionTest = Provider.of<SessionProvider>(context, listen: false).currentSession;
print(' session: '+ sessionTest.name);
答案 0 :(得分:1)
因为sessionTest.name在print(' session: '+ sessionTest.name);
中返回null,所以错误的来源在Session类中,它应该是:
class Session {
int id;
String name;
Session({this.id, this.name}); // <--
}