Вызов setState () с другой страницы - флаттер - PullRequest
0 голосов
/ 17 января 2020

У меня есть строка _value, которую я хотел бы назвать с другой страницы.

Вот мой players.dart

class MyWidgetPopup extends StatefulWidget {
  @override
  MyWidgetPopupState createState() => MyWidgetPopupState();
}

enum Answers{FIRST,SECOND}



class MyWidgetPopupState extends State<MyWidgetPopup> {      

String _value = '';

  void _setValue(String value) => setState(() => _value = value);

  Future selectGk(BuildContext context) async {
    switch(
    await showDialog(

...
...

               {
      case Answers.FIRST:
      _setValue('FIRST TEAM');
      break;
      case Answers.SECOND:
      _setValue('SECOND TEAM');
      break;

    }
}

Итак, в Players.dart, Я могу показать выбранную команду простым кодом: Text(_value)

Но я хотел бы показать это в select.dart

import 'package:flutter/material.dart';
import 'package:myapp/players.dart';

MyWidgetPopupState dataSource = MyWidgetPopupState();



class Besdortbir extends StatefulWidget {


  @override
  _BesdortbirState createState() => _BesdortbirState();
}

class _BesdortbirState extends State<Besdortbir> {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text(
            'My Title'),  
          centerTitle: true,
          backgroundColor: Colors.redAccent[700],
          elevation: 0.0,
        ),

  body: Stack(
    fit: StackFit.expand,
    children: <Widget>[
      Container(
        decoration: BoxDecoration(
            image: new DecorationImage(
                image: new AssetImage("assets/field.png"),
                fit: BoxFit.fill
            )
        ),

      ),

//FIRST PLAYER
Container(

  padding: EdgeInsets.only(bottom: 90.0),

child: Row(
  mainAxisAlignment: MainAxisAlignment.spaceEvenly,
  crossAxisAlignment: CrossAxisAlignment.end,
   children: <Widget>[ 
     GestureDetector(
        onTap: (){dataSource.selectGk(context);},  //I have the FIRST TEAM and SECOND TEAM listed here.
        child: Container(
          child: ClipRRect(
            borderRadius: BorderRadius.circular(20.0),
            child: Image.asset('assets/PLUS.png',


                scale: 8),
          ),
        ),
      ),
      Text(//somehow I would like to show which team is selected by user), 
   ],

  ),
),
    ],
  ),
    );

}          

}

Я пытался вспомнить setState(), _value и несколько других вариантов. Но я не смог добиться успеха.

...