问题是我无法将我自己的类ForceSelection值从另一个屏幕传递到另一个屏幕的StatefulWidget。在StatelessWidget中工作正常。我试着从下面的教程中学习:https : //flutter.dev/docs/cookbook/navigation/passing-data#4-navigate-and-pass-data- to-the-detail-screen
我在levelSelection.dart中有此类
class ForceSelection { final String forceSelection; final String langSelection; ForceSelection(this.forceSelection, this.langSelection); }
我正在尝试将值传递给下一个文件PlayQuiz.dart
Game(forceSelection: ForceSelection('maa', 'fin'))
game.dart看起来像这样:
class Game extends StatelessWidget { final ForceSelection forceSelection; Game({Key key, @required this.forceSelection}) : super(key: key); @override Widget build(BuildContext context) { return MaterialApp( title: forceSelection.langSelection, // TODO should work and change later theme: new ThemeData( primaryColor: Colors.white, ), home: PlayQuiz(), ); } }
我想将ForceSelection值传递给PlayQuiz()
class PlayQuizState extends State<PlayQuiz> { Game.forceSelection // <--- How can I get the value out of here? } class PlayQuiz extends StatefulWidget { @override PlayQuizState createState() => new PlayQuizState(); }
试试这个代码
在PlayQuiz()中添加了forceSelecton参数
class Game extends StatelessWidget { final ForceSelection forceSelection; Game({Key key, @required this.forceSelection}) : super(key: key); @override Widget build(BuildContext context) { return MaterialApp( title: forceSelection.langSelection, // TODO should work and change later theme: new ThemeData( primaryColor: Colors.white, ), home: PlayQuiz(forceSelection), ); } }
进行中测验
class PlayQuiz extends StatefulWidget { final ForceSelection forceSelection; PlayQuiz(this.forceSelection); @override PlayQuizState createState() => new PlayQuizState(forceSelection); }
在PlayQuizState
class PlayQuizState extends State<PlayQuiz> { ForceSelection forceSelection; PlayQuizState(ForceSelection forceSelection) { this.forceSelection = forceSelection; } }