我试图将animationController作为参数传递给我的statefullwidget。但是得到这个错误。
无法在初始值设定项中访问示例成员“_controller”。请尝试将对示例成员的引用替换为其他表达式
我只是试图通过底部导航器添加动画到导航变化。
我的父小部件如下所示。
class _DashboardState extends State<Dashboard>
with SingleTickerProviderStateMixin {
late AnimationController _controller;
@override
void initState() {
_controller = AnimationController(
vsync: this, duration: const Duration(milliseconds: 150));
_controller.forward();
super.initState();
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
List<Widget> widgetList = [
DashboardView(),
CallLogs(
animationController: _controller,
),
ContactLogs(),
UserProfile()
];
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: widgetList[context.watch<NavigationIndex>().index],
),
bottomNavigationBar: const BottomNavigator(),
);
}
}
孩子看起来像这样
import 'package:flutter/material.dart';
class CallLogs extends StatefulWidget {
final AnimationController animationController;
const CallLogs({super.key, required this.animationController});
@override
State<CallLogs> createState() => _CallLogsState();
}
class _CallLogsState extends State<CallLogs> {
@override
Widget build(BuildContext context) {
return Container(
child: const Text("Call logs"),
);
}
}
任何帮助都将不胜感激。提前感谢。干杯。
3条答案
按热度按时间piwo6bdm1#
您可以使用
late
关键字进行延迟初始化。关于late keyword with declaration的更多信息
cclgggtu2#
将
List<Widget> widgetList =
替换为List<Widget> get widgetList =>
widgetList变量是在创建类对象时赋值的。到那时,_controller还没有初始化,因此它为空。
rqqzpn5f3#
将此
getter
添加到State
类中:然后在
widgetList
列表中,将_controller
替换为controller
: