如何在Flutter中的同一活动中将字符串值从一个类传递到另一个?

时间:2019-06-03 14:29:03

标签: string class flutter pass-data

//我找不到将字符串从一个类传递到另一个类的方法。它们都在同一屏幕上,我想将索引从类的综合浏览量传递给另一个。任何帮助将不胜感激!

//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);

1 个答案:

答案 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(() {});
    }
  }
}