Кнопка сырья включенаПресс не работает - PullRequest
0 голосов
/ 22 сентября 2018

Я использую анимированный конструктор для создания макета.Я использую кнопку «Сырье» в макете следующим образом:

      import 'package:flutter/material.dart';
class MyPage2 extends StatefulWidget {
  @override
  _MyPage2State createState() => _MyPage2State();
}

class _MyPage2State extends State<MyPage2>
    with SingleTickerProviderStateMixin {
  AnimationController _controller;

  @override
  void initState() {
    super.initState();
    _controller = AnimationController(
        duration: const Duration(milliseconds: 2500),
        vsync: this);
    _controller.forward() ;

    _controller.addStatusListener((status) {
      if (status == AnimationStatus.completed) {
      //  _controller.reverse(from:0.80);

      }
    });
  }

  @override
  void dispose() {
    super.dispose();
    _controller.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return new MyAnimatedPage(controller:_controller);
  }
}

class MyAnimatedPage extends StatelessWidget {
  MyAnimatedPage({@required AnimationController controller
  }) :animation = new MyPageEnterAnimation(controller);
  final MyPageEnterAnimation animation;

  double sHeight, sWidth;


  void _buttonPressed() {
    print('button pressed');
  }

  Widget _buildAnimation(BuildContext context, Widget child) {
    return
      Column(
        children: <Widget>[
          RawMaterialButton(
            onPressed: () {
              _buttonPressed();
            },
            animationDuration: Duration(milliseconds: 500),
            elevation: 4.0,
            shape: CircleBorder(
                side: BorderSide(width: 4.0, color: Colors.yellow)),
            fillColor: Colors.deepOrangeAccent,
            splashColor: Colors.indigo,
            highlightElevation: 3.0,
            highlightColor: Colors.red,
            padding: EdgeInsets.all(50.0),
            child: Text("+", style: TextStyle(fontSize: 100.0),),
          ),
        ],
      );
  }

  @override
  Widget build(BuildContext context) {
    MediaQueryData data = MediaQuery.of(context);
    sHeight = data.size.height;
    sWidth = data.size.width;

    // TODO: implement build
    return new Scaffold(
      /*  body: new AnimatedBuilder(animation: animation.controller,
          builder: _buildAnimation)*/
      body: Column(
        children: <Widget>[
          RawMaterialButton(
            onPressed: () {
              print('button');
            },
            animationDuration: Duration(milliseconds: 500),
            elevation: 4.0,
            shape: CircleBorder(
                side: BorderSide(width: 4.0, color: Colors.yellow)),
            fillColor: Colors.deepOrangeAccent,
            splashColor: Colors.indigo,
            highlightElevation: 3.0,
            highlightColor: Colors.red,
            padding: EdgeInsets.all(50.0),
            child: Text("+", style: TextStyle(fontSize: 100.0),),
          ),
          Text("Hello Button"),
        ],
      ),
    );
  }
}

class MyPageEnterAnimation {

  final AnimationController controller ;
  final Animation<double> activityOpacity ;
  final Animation<double> logoXTranslation;
  final Animation<double> bannerXTranslation ;
  final Animation<double> sponsorsXTranslation ;

  MyPageEnterAnimation(this.controller) :
        logoXTranslation = new Tween(begin: 0.0, end: 2.75).animate(
          new CurvedAnimation(
            parent: controller,
            curve: new Interval(
              0.200,
              0.500,
              curve: Curves.decelerate,
            ),
          ),
        ),
        activityOpacity = new Tween(begin: 0.0, end: 1.0).animate(

    new CurvedAnimation(
      parent: controller,
      curve: new Interval(
        0.500,
        0.700,
        curve: Curves.ease,
      ),
    ),
  ),
  bannerXTranslation =
  new Tween(begin: 1560.0, end: 0.0).animate(
  new CurvedAnimation(
  parent: controller,
  curve: new Interval(
  0.730,
  0.900,
  curve: Curves.ease,
  ),
  ),
  ),
  sponsorsXTranslation = new Tween(begin: 360.0, end: 50.0).animate(
    new CurvedAnimation(
      parent: controller,
      curve: new Interval(
        0.900,
        1.000,
        curve: Curves.ease,
      ),
    ),
  );


}

Однако функция onPressed _buttonPressed никогда не вызывается, поскольку оператор print никогда не печатает ничего.Я даже переместил весь код кнопки в основную функцию сборки, но все равно безрезультатно.Где я мог ошибиться, пожалуйста, помогите.Спасибо

1 Ответ

0 голосов
/ 19 июля 2019

Как упоминает Viren V в комментарии :

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

Для меня проблема заключалась в использовании представления стека с переполнением, установленным в overflow.visible, где была расположена кнопка.изменив его на overflow.hidden, а затем присвоив заданному значению высоту стека, я получил желаемый результат разработки, и кнопка снова заработала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...