Tailor

MIT License

一个在运行时计算小部件大小的 Flutter 小部件。

用法

只需用 Tailor 包裹您的窗口小部件,即可在 builder 中获取大小。每当窗口小部件的大小发生变化时,builder 都会返回该大小。

Tailor(
  builder: (_, size, child) {
    return Container(
      color: Colors.red,
      height: 100,
      width: 100,
      alignment: Alignment.center,
      child: Text(
        "Size: ${size.toString()}",
        textAlign: TextAlign.center,
        style: const TextStyle(color: Colors.white),
      ),
    );
  },
);

我们可以使用 Tailor 小部件获取任何窗口小部件的大小,但如果我们想获取放置在 Scaffold 中的 AppBar 的大小呢?那么 Tailor 小部件将无法工作,您也无法将其包裹在 AppBar 周围,因为它是一个普通的 Widget,而 AppBar 是一个 PreferredSizeWidget

class AppBar extends StatefulWidget implements PreferredSizeWidget {

因此,为了解决这个问题,我们有了 TailorAppBar。当 AppBar 放置在 Scaffold 中时,只需用 TailorAppBar 小部件将其包裹起来,然后就大功告成了!您将获得 AppBar 的大小。

Scaffold(
  appBar: TailorAppBar(
    builder: (_, size) {
      return AppBar(
        title: Text('AppBar width: ${size.width} height: ${size.height}'),
      );
    },
  ),
);

GitHub

查看 Github