Flutter:奇怪的动画,结合了bottomSheet和bottomNavigationBar并调用setState

问题描述

我在有状态小部件中具有一个带有bottomSheet和bottomNavigationBar的脚手架。 我计划在bottomSheet中添加按钮,调用setState并触发本地小部件树的重建。

问题是,调用setState或重建窗口小部件时发生奇怪的动画。底部工作表似乎来自底部导航栏顶部的底部

在重建或调用setState时是否有一种方法可以解决此问题,从而使该动画不会发生?

请参见下面的代码。要观察该行为,请运行代码,然后单击绿色的bottomSheet:

import 'package:Flutter/material.dart';

void main() => runApp(MyApp());

/// This Widget is the main application widget.
class MyApp extends StatelessWidget {
  static const String _title = 'Flutter Code Sample';

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: _title,home: MyStatefulWidget(),);
  }
}

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

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

class _MyStatefulWidgetState extends State<MyStatefulWidget> {
  int _selectedindex = 0;
  static const TextStyle optionStyle =
      TextStyle(fontSize: 30,fontWeight: FontWeight.bold);
  static const List<Widget> _widgetoptions = <Widget>[
    Text(
      'Index 0: Home',style: optionStyle,),Text(
      'Index 1: Business',Text(
      'Index 2: School',];

  void _onItemTapped(int index) {
    setState(() {
      _selectedindex = index;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('BottomNavigationBar Sample'),body: Center(
        child: _widgetoptions.elementAt(_selectedindex),bottomSheet: MaterialButton(onpressed: () {
        setState(() {});
      },child: Container(height: 50,color: Colors.green)),bottomNavigationBar: BottomNavigationBar(
        items: const <BottomNavigationBarItem>[
          BottomNavigationBarItem(
            icon: Icon(Icons.home),title: Text('Home'),BottomNavigationBarItem(
            icon: Icon(Icons.business),title: Text('Business'),BottomNavigationBarItem(
            icon: Icon(Icons.school),title: Text('School'),],currentIndex: _selectedindex,selectedItemColor: Colors.Amber[800],onTap: _onItemTapped,);
  }
}

当复制/粘贴并运行上面的代码时,您应该能够重现我正在谈论的行为。

我不确定我在这里做错了什么,但这对我来说似乎很可疑。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...