//我找不到将字符串从一个类传递到另一个类的方法。它们都在同一屏幕上,我想将索引从类的综合浏览量传递给另一个。任何帮助将不胜感激!
//on the first class//
onPageChanged: (int index) {
_sendDataToAnotherClass(context, index);
_currentPageNotifier.value = index;
}),
),
);
}
void _sendDataToAnotherClass(BuildContext context, int index) {
final String texttosend = index.toString();
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) {
return new personaname(text: texttosend);
}
));
}
//on the second class//
final String text ;
personaname({Key key, @required this.text}) : super(key: key);
答案 0 :(得分:0)
如果您的角色名称是一个类(如果确实是一个类,则仅供参考,正确的格式是将每个单词的首字母大写-PersonaName),并且该类是有状态的小部件,您可以将数据向下传递给它在状态内进行调用以在数据更改时覆盖didUpdateWidget方法到setState的方法。这意味着您不需要值通知程序。
类似的事情可能会满足您的需求:
class PageViewHolder extends StatelessWidget{
PersonaName name = PersonaName(text: 'text',);
@override
Widget build(BuildContext context) {
return PageView(
onPageChanged: (p){
var textToSend = 'do logic to decide name';
name.text = textToSend;
},
);
}
}
class PersonaName extends StatefulWidget{
String text;
PersonaName({Key key, this.text}) : super(key: key);
@override
State<StatefulWidget> createState() =>_PersonaName();
}
class _PersonaName extends State<PersonaName>{
@override
Widget build(BuildContext context) {
return Text(widget.text);
}
@override
void didUpdateWidget(PersonaName oldWidget) {
super.didUpdateWidget(oldWidget);
if(widget.text != oldWidget.text){
setState(() {});
}
}
}