кнопка с контуром не выполняет событие onPressed - Flutter - PullRequest
0 голосов
/ 22 апреля 2020
          Stack(
          children: <Widget>[
            Container(
              height: screenHeidth,
              width: screenWidth,
              decoration: BoxDecoration(
                image: DecorationImage(
                  image: AssetImage("assets/fondo1.png"),
                  fit: BoxFit.cover,
                ),
              ),
              child: Padding(
                padding: const EdgeInsets.only(top: 30, right: 20.0),
                child: Align(
                    alignment: Alignment.topRight,
                    child: OutlineButton(
                      padding: EdgeInsets.only(left: 30, right: 30.0),

                      onPressed: () {
                        print("press");
                        Navigator.push(context,
                            MaterialPageRoute(builder: (context) => Safe()));
                      },
                      child: Text(
                        "SALTAR",
                        style: TextStyle(color: Colors.white),
                      ),
                      borderSide: BorderSide(
                          color: Colors.white, style: BorderStyle.solid),
                      shape: StadiumBorder(),
                    )),
              ),
            ),
],
        );

Я немного волнуюсь, что это стоило мне чего-то, чтобы поставить этот дизайн ... И теперь оказывается, что моя маленькая кнопка не выполняет нужное мне действие, остальные части кода я не размещаю при необходимости могу добавить фото дизайна

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Я не могу повторить упомянутую вами проблему. событие onPress срабатывает правильно и переходит к следующему экрану. Пример рабочего кода ниже:

return Scaffold(
      backgroundColor: Colors.black,
      body: Stack(
        children: <Widget>[
          Container(
            height: 200,
            width: 200,
            decoration: BoxDecoration(
              image: DecorationImage(
                image: AssetImage("assets/placeholder.png"),
                fit: BoxFit.cover,
              ),
            ),
            child: Padding(
              padding: const EdgeInsets.only(top: 30, right: 20.0),
              child: Align(
                  alignment: Alignment.topRight,
                  child: OutlineButton(
                    padding: EdgeInsets.only(left: 30, right: 30.0),

                    onPressed: () {
                      print("press");
                      Navigator.push(context,
                          MaterialPageRoute(builder: (context) => Safe()));
                    },
                    child: Text(
                      "SALTAR",
                      style: TextStyle(color: Colors.white),
                    ),
                    borderSide: BorderSide(
                        color: Colors.white, style: BorderStyle.solid),
                    shape: StadiumBorder(),
                  )),
            ),
          ),
        ],
      )
    );
  }
}

class Safe extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: AppBar(
        title: Text('Test'),
      ),
    );
  }
}

Он правильно печатает вывод в консоли:

I/flutter ( 4357): press
I/flutter ( 4357): press

Вы можете сравнить свой код с приведенным выше и определить, чего вам не хватает в вашем коде.

Надеюсь, это поможет.

0 голосов
/ 22 апреля 2020

Попробуйте использовать именованные маршруты:

На вашей безопасной странице в разделе Stless или Stfull укажите имя маршрута:

static const routeName = '/your-safe-page';

После go в файле main.dart и определите этот маршрут после MaterialApp (

initialRoute: '/',
      routes: {
        '/': (ctx) => YourHomeScreen(),
        Safe.routeName: (ctx) => Safe(),
        },

После go снова и повторите попытку с помощью этого метода:

onPressed: () {
              Navigator.of(context).pushNamed(Safe.routeName);
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...