InkWell 用于小部件列表?

Ezi*_*uka 1 animation listview list dart flutter

我想为 flutter 中的侧栏添加墨水池动画,但我不想为每个项目添加它们,有什么方法可以将墨水池添加到列表中的所有项目,而无需逐一执行,(我将其添加到第一个列表视图小部件)。如果不可能,那么是否有任何小部件可以完成这项工作?谢谢

代码 :)

class SideBar extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Drawer(
      child: Column(children: <Widget>[
        Container(
          width: double.infinity,
          padding: EdgeInsets.all(20),
          color: Theme.of(context).accentColor,
          child: Center(
              child: Column(
            children: <Widget>[
              Container(
                width: 100,
                height: 100,
                decoration: BoxDecoration(
                  shape: BoxShape.rectangle,
                ),
              ),
            ],
          )),
        ),
        InkWell(
          onTap: () {},
          child: ListTile(
            leading: Icon(Icons.person),
            title: Text('Account'),
          ),
        ),
        ListTile(
          leading: Icon(Icons.settings),
          title: Text('Settings'),
        ),
        ListTile(
          leading: Icon(Icons.transit_enterexit),
          title: Text('Exit'),
        ),
      ]),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

Ted*_*nry 7

ListTile有一个onTap参数将添加相同的动画InkWell

import 'package:flutter/material.dart';

void main() {
  return runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(final BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(final BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text("My Home Page")),
      drawer: MyDrawer(),
      body: Center(child: const Text("My Home Page")),
    );
  }
}

class MyDrawer extends StatelessWidget {
  @override
  Widget build(final BuildContext context) {
    return Drawer(
      child: Column(children: <Widget>[
        ListTile(
          leading: const Icon(Icons.person),
          title: const Text('Account'),
          onTap: () {},
        ),
        ListTile(
          leading: const Icon(Icons.settings),
          title: const Text('Settings'),
          onTap: () {},
        ),
      ]),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 非常清楚,在文档中没有找到此信息(当然我看起来不太好)。我不知道为什么,但我的没有显示任何动画,甚至尝试用 InkWell 拥抱每个 ListTile,但这并没有解决问题 (2认同)