Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 颤振-如何用动画扩展小部件?_Android_Flutter_User Interface_Dart - Fatal编程技术网

Android 颤振-如何用动画扩展小部件?

Android 颤振-如何用动画扩展小部件?,android,flutter,user-interface,dart,Android,Flutter,User Interface,Dart,所以我有以下代码 Row( children: [ IconButton(), // IconButton1 Expanded( child: Container( child: Textfield(), ), ), IconButton(), // IconButton2 ] ) 当我在textfield中键入某些内容时,我希望IconButton1被删除,textfield容器或textfield本身通过动画展

所以我有以下代码

Row(
  children: [
    IconButton(), // IconButton1
    Expanded(
      child: Container(
        child: Textfield(),
      ),
    ),
    IconButton(), // IconButton2
  ]
)
当我在textfield中键入某些内容时,我希望IconButton1被删除,textfield容器或textfield本身通过动画展开,以占据IconButton1的空间。我可以做到这一点,但我不能做它与动画


我尝试了AnimatedContainer和AnimatedSwitcher,但它们没有按预期工作。

如果它是一个简单的容器,您应该使用AnimatedContainer。 否则你应该使用

导入“包装:颤振/材料.省道”;
类TestScreen扩展了StatefulWidget{
@凌驾
_TestScreenState createState();
}
类_TestScreenState扩展状态{
最终项目=列表。生成(20,(i)=>i+1);
@凌驾
小部件构建(构建上下文){
最终标题=‘解雇项目’;
返回材料PP(
标题:标题,,
主题:主题数据(
主样本:颜色。蓝色,
),
家:脚手架(
appBar:appBar(
标题:文本(标题),
),
正文:ListView.builder(
itemCount:items.length,
itemBuilder:(上下文,索引){
最终项目=项目[索引];
可驳回的回报(
key:key(item.toString()),
onDismissed:(方向){
设置状态(){
项目移除(索引);
});
ScaffoldMessenger.of(上下文)。showSnackBar(
小吃条(
内容:文本(“$item disposed”),
),
);
},
背景:容器(颜色:Colors.yellow),
子:动画容器(
高度:1200/件。长度,
宽度:MediaQuery.of(context).size.width,
持续时间:持续时间(毫秒:300),
子项:文本(“$item”),
颜色:(项目[索引]%2==0)?颜色。绿色:颜色。红色,
),
);
},
),
),
);
}
}

问题在于
容器
宽度
未在
容器
内定义。
容器
放在
扩展的
小部件中,这样它就可以获得所能达到的宽度。现在的问题是,当我删除行中的一个组件时,“扩展”将扩展容器。这就是我想要一些动画的地方,因为到目前为止,它只是扩展,没有任何预期的动画。检查代码,我已经用代码片段编辑了我的答案。谢谢,但这不是我想要的。如果你读了我的问题,你会发现我想要2个图标按钮,一个文本字段,1个以上的图标按钮,这4个元素排成一行。当我在textfield中键入内容时,前两个图标按钮应该消失,textfield应该水平扩展,以占据移除的那两个图标按钮的空间。您还可以检查我提供的代码,以便了解我要构建的小部件树。
import 'package:flutter/material.dart';

class TestScreen extends StatefulWidget {
  @override
  _TestScreenState createState() => _TestScreenState();
}

class _TestScreenState extends State<TestScreen> {
  final items = List<int>.generate(20, (i) => i + 1);

  @override
  Widget build(BuildContext context) {
    final title = 'Dismissing Items';

    return MaterialApp(
      title: title,
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text(title),
        ),
        body: ListView.builder(
          itemCount: items.length,
          itemBuilder: (context, index) {
            final item = items[index];
            return Dismissible(
              key: Key(item.toString()),
              onDismissed: (direction) {
                setState(() {
                  items.removeAt(index);
                });

                ScaffoldMessenger.of(context).showSnackBar(
                  SnackBar(
                    content: Text('$item dismissed'),
                  ),
                );
              },
              background: Container(color: Colors.yellow),
              child: AnimatedContainer(
                height: 1200 / items.length,
                width: MediaQuery.of(context).size.width,
                duration: Duration(milliseconds: 300),
                child: Text('$item'),
                color: (items[index] % 2 == 0) ? Colors.green : Colors.red,
              ),
            );
          },
        ),
      ),
    );
  }
}