Неявные проблемы с анимацией - PullRequest
0 голосов
/ 17 апреля 2020

Итак, у меня есть приложение для флаттера, в котором есть две страницы, между которыми можно переключаться с помощью двух кнопок. Я хочу, чтобы они неявно анимировались при нажатии кнопки. Код:

import 'package:auxin/pages/home.dart';
import 'package:auxin/pages/bookmarks.dart';
import 'package:flutter/material.dart';

void main() =>
    runApp(MaterialApp(home: MyApp(), debugShowCheckedModeBanner: false));

class MyApp extends StatefulWidget {
  MyApp({Key key}) : super(key: key);

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

class _MyAppState extends State<MyApp> {
  bool homeselected = true;
  bool bookmarkselected = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        color: Color.fromRGBO(0, 0, 0, 1),
        child: Column(children: <Widget>[
          Container(
            height: 250,
            child: Row(
              children: <Widget>[
                Expanded(
                  child: Center(
                    child: Column(
                      children: <Widget>[
                        SizedBox(
                          height: 90,
                        ),
                        Text(
                          'AUXIN',
                          style: TextStyle(
                              color: Colors.white,
                              fontWeight: FontWeight.w800,
                              fontSize: 20),
                        ),
                        SizedBox(height: 40),
                        Row(
                          children: <Widget>[
                            Expanded(
                              flex: 1,
                              child: Padding(
                                padding: EdgeInsets.fromLTRB(40, 0, 10, 0),
                                child: FlatButton(
                                  color: homeselected ? Colors.pink : null,
                                  onPressed: () => setState(() => {
                                        homeselected = true,
                                        bookmarkselected = false
                                      }),
                                  child: Text('HOME',
                                      style: TextStyle(color: Colors.white)),
                                  shape: RoundedRectangleBorder(
                                      side: BorderSide(
                                          color: Colors.pink,
                                          width: 1,
                                          style: BorderStyle.solid),
                                      borderRadius: BorderRadius.circular(50)),
                                ),
                              ),
                            ),
                            Expanded(
                              flex: 1,
                              child: Padding(
                                padding:
                                    const EdgeInsets.fromLTRB(10, 0, 40, 0),
                                child: FlatButton(
                                  color: homeselected ? null : Colors.pink,
                                  onPressed: () => setState(() => {
                                        homeselected = false,
                                        bookmarkselected = true
                                      }),
                                  child: Text('BOOKMARKS',
                                      style: TextStyle(color: Colors.white)),
                                  shape: RoundedRectangleBorder(
                                      side: BorderSide(
                                          color: Colors.pink,
                                          width: 1,
                                          style: BorderStyle.solid),
                                      borderRadius: BorderRadius.circular(50)),
                                ),
                              ),
                            ),
                          ],
                        ),
                      ],
                    ),
                  ),
                  flex: 1,
                ),
              ],
            ),
            decoration: BoxDecoration(
                borderRadius: BorderRadius.only(
                    bottomLeft: Radius.circular(30),
                    bottomRight: Radius.circular(30)),
                color: Color.fromRGBO(27, 27, 30, 0.9)),
          ),
          AnimatedContainer(
              duration: Duration(milliseconds: 1000),
              child: homeselected ? Home() : Bookmark())
        ]),
      ),
    );
  }
}

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

...