我尝试了其他 StackOverflow 答案,总而言之,提到了 onPressed() 并且在那里调用了 setState() 但我不知道在我的应用程序中在哪里调用 setState() 因为我没有任何纽扣。那么这里真的需要 setState() 吗? 这是我的主要课程
class OpeningScreen extends StatefulWidget {
@override
_OpeningScreenState createState() => _OpeningScreenState();
}
class _OpeningScreenState extends State<OpeningScreen> {
@override
void initState(){
super.initState();
Timer(Duration(seconds: 5), () => Navigator.of(context)
.pushAndRemoveUntil(MaterialPageRoute(
builder: (context) => home_screen()),
(Route<dynamic> route) => false));
}
Widget build(BuildContext context) {
return Scaffold(
body: Container(
decoration: openingScreenBgDecoration,
child: Center(
child: Column(
children: [
textAnimation(welcomeText),
],
),
),
),
);
}
}
这是我声明动画默认文本样式的地方
String welcomeText = "Welcome to My App";
bool animated = true;
TextStyle openingScreenTextStyle =
TextStyle(
color: Colors.black,
fontSize: 48.0,
fontWeight: FontWeight.bold,
);
TextStyle openingScreenTextStyle1 =
TextStyle(
color: Colors.black,
fontSize: 24.0,
fontWeight: FontWeight.bold,
);
textAnimation (welcomeText){
AnimatedDefaultTextStyle(
child: Text(welcomeText),
style: animated ? openingScreenTextStyle : openingScreenTextStyle1,
duration: Duration(milliseconds: 200));
return textAnimation;
}
这是我得到的错误
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following _TypeError was thrown building OpeningScreen(dirty, state: _OpeningScreenState#aa235):
type '(dynamic) => dynamic' is not a subtype of type 'Widget'
The relevant error-causing widget was:
OpeningScreen file:///C:/Users/IdeaProjects/i_app/lib/main.dart:5:13
When the exception was thrown, this was the stack:
#0 _OpeningScreenState.build (package:i_app/ui/neercs_gninepo.dart:29:15)
#1 StatefulElement.build (package:flutter/src/widgets/framework.dart:4663:28)
#2 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4546:15)
#3 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#4 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
#5 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4525:5)
#6 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4710:11)
#7 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4520:5)
... Normal element mounting (132 frames)
#139 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3490:14)
#140 MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5991:32)
... Normal element mounting (267 frames)
#407 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3490:14)
#408 Element.updateChild (package:flutter/src/widgets/framework.dart:3258:18)
#409 RenderObjectToWidgetElement._rebuild (package:flutter/src/widgets/binding.dart:1174:16)
#410 RenderObjectToWidgetElement.mount (package:flutter/src/widgets/binding.dart:1145:5)
#411 RenderObjectToWidgetAdapter.attachToRenderTree.<anonymous closure> (package:flutter/src/widgets/binding.dart:1087:17)
#412 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2620:19)
#413 RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:1086:13)
#414 WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:927:7)
#415 WidgetsBinding.scheduleAttachRootWidget.<anonymous closure> (package:flutter/src/widgets/binding.dart:908:7)
(elided 11 frames from class _RawReceivePortImpl, class _Timer, dart:async, and dart:async-patch)
════════════════════════════════════════════════════════════════════════════════════════════════════
════════ Exception caught by widgets library ═══════════════════════════════════════════════════════
The following _TypeError was thrown building OpeningScreen(dirty, state: _OpeningScreenState#aa235):
type '(dynamic) => dynamic' is not a subtype of type 'Widget'
The relevant error-causing widget was:
OpeningScreen file:///C:/Users/IdeaProjects/i_app/lib/main.dart:5:13
When the exception was thrown, this was the stack:
#0 _OpeningScreenState.build (package:i_app/ui/neercs_gninepo.dart:29:15)
#1 StatefulElement.build (package:flutter/src/widgets/framework.dart:4663:28)
#2 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4546:15)
#3 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
#4 Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
答案 0 :(得分:0)
它奏效了。做了一些改动。
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
setState(() {
animated = !animated;
});
});
在 initState() 中只有我声明了 setState() 并且对于这个错误
type '(dynamic) => dynamic' is not a subtype of type 'Widget'
我直接在 children 内部声明了 AnimatedDefaultTextStyle