{"id":374,"date":"2024-05-14T14:48:13","date_gmt":"2024-05-14T06:48:13","guid":{"rendered":"https:\/\/www.ixriver.com\/?p=374"},"modified":"2024-11-07T17:11:01","modified_gmt":"2024-11-07T09:11:01","slug":"flutter-%e5%8a%a8%e7%94%bb","status":"publish","type":"post","link":"https:\/\/www.ai.ixriver.com\/?p=374","title":{"rendered":"Flutter \u52a8\u753b"},"content":{"rendered":"\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_65 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title \" >\u76ee\u5f55<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.ai.ixriver.com\/?p=374\/#%E5%8A%A8%E7%94%BB%E7%B1%BB%E5%9E%8B\" title=\"\u52a8\u753b\u7c7b\u578b\">\u52a8\u753b\u7c7b\u578b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.ai.ixriver.com\/?p=374\/#%E5%B8%B8%E8%A7%81%E5%8A%A8%E7%94%BB%E6%A8%A1%E5%BC%8F\" title=\"\u5e38\u89c1\u52a8\u753b\u6a21\u5f0f\">\u5e38\u89c1\u52a8\u753b\u6a21\u5f0f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.ai.ixriver.com\/?p=374\/#%E5%9F%BA%E6%9C%AC%E5%8A%A8%E7%94%BB%E6%A6%82%E5%BF%B5%E5%92%8C%E7%B1%BB\" title=\"\u57fa\u672c\u52a8\u753b\u6982\u5ff5\u548c\u7c7b\">\u57fa\u672c\u52a8\u753b\u6982\u5ff5\u548c\u7c7b<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.ai.ixriver.com\/?p=374\/#%E5%8A%A8%E7%94%BB%E9%80%9A%E7%9F%A5\" title=\"\u52a8\u753b\u901a\u77e5\">\u52a8\u753b\u901a\u77e5<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.ai.ixriver.com\/?p=374\/#AnimationController\" title=\"AnimationController\">AnimationController<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.ai.ixriver.com\/?p=374\/#%E5%8A%A8%E7%94%BB%E7%A4%BA%E4%BE%8B\" title=\"\u52a8\u753b\u793a\u4f8b\">\u52a8\u753b\u793a\u4f8b<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.ai.ixriver.com\/?p=374\/#%E5%88%9D%E5%A7%8B%E5%8C%96\" title=\"\u521d\u59cb\u5316\">\u521d\u59cb\u5316<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.ai.ixriver.com\/?p=374\/#%E6%97%8B%E8%BD%AC\" title=\"\u65cb\u8f6c\">\u65cb\u8f6c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.ai.ixriver.com\/?p=374\/#%E6%B7%A1%E5%85%A5%E6%B7%A1%E5%87%BA\" title=\"\u6de1\u5165\u6de1\u51fa\">\u6de1\u5165\u6de1\u51fa<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.ai.ixriver.com\/?p=374\/#%E5%B9%B3%E7%A7%BB\" title=\"\u5e73\u79fb\">\u5e73\u79fb<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.ai.ixriver.com\/?p=374\/#%E8%BF%87%E6%B8%A1Container\" title=\"\u8fc7\u6e21Container\">\u8fc7\u6e21Container<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.ai.ixriver.com\/?p=374\/#%E6%B7%A1%E5%85%A5%E6%B7%A1%E5%87%BAwidget\" title=\"\u6de1\u5165\u6de1\u51fawidget\">\u6de1\u5165\u6de1\u51fawidget<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%8A%A8%E7%94%BB%E7%B1%BB%E5%9E%8B\"><\/span>\u52a8\u753b\u7c7b\u578b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul>\n<li>\u8865\u95f4\u52a8\u753b<\/li>\n\n\n\n<li>\u57fa\u4e8e\u7269\u7406\u57fa\u7840\u7684\u52a8\u753b<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%B8%B8%E8%A7%81%E5%8A%A8%E7%94%BB%E6%A8%A1%E5%BC%8F\"><\/span>\u5e38\u89c1\u52a8\u753b\u6a21\u5f0f<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul>\n<li>\u5217\u8868\u6216\u7f51\u683c\u52a8\u753b<\/li>\n\n\n\n<li>\u5171\u4eab\u5143\u7d20\u8f6c\u6362<\/li>\n\n\n\n<li>\u4ea4\u7ec7\u52a8\u753b<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%9F%BA%E6%9C%AC%E5%8A%A8%E7%94%BB%E6%A6%82%E5%BF%B5%E5%92%8C%E7%B1%BB\"><\/span>\u57fa\u672c\u52a8\u753b\u6982\u5ff5\u548c\u7c7b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul>\n<li>Animation\uff0cFlutter \u52a8\u753b\u5e93\u4e2d\u7684\u6838\u5fc3\u7c7b\uff0c\u63d2\u5165\u7528\u4e8e\u6307\u5bfc\u52a8\u753b\u7684\u503c\u3002<\/li>\n\n\n\n<li>Animation \u5bf9\u8c61\u77e5\u9053\u52a8\u753b\u76ee\u524d\u7684\u72b6\u6001\uff08\u4f8b\u5982\uff0c\u662f\u5426\u5f00\u59cb\uff0c\u6682\u505c\uff0c\u524d\u8fdb\u6216\u5012\u9000\uff09\uff0c\u4f46\u662f\u5bf9\u5c4f\u5e55\u4e0a\u663e\u793a\u7684\u5185\u5bb9\u4e00\u65e0\u6240\u77e5\u3002<\/li>\n\n\n\n<li>AnimationController \u7ba1\u7406 Animation\uff0c\u8303\u56f4\u4e3a[0.0, 1.0]<\/li>\n\n\n\n<li>CurvedAnimation \u5b9a\u4e49\u8fdb\u7a0b\u4e3a\u975e\u7ebf\u6027\u66f2\u7ebf\u3002<\/li>\n\n\n\n<li>Tween \u4e3a\u52a8\u753b\u5bf9\u8c61\u63d2\u5165\u4e00\u4e2a\u8303\u56f4\u503c\u3002\u4f8b\u5982\uff0cTween \u53ef\u4ee5\u5b9a\u4e49\u63d2\u5165\u503c\u7531\u7ea2\u5230\u84dd\uff0c\u6216\u4ece 0 \u5230 255\u3002<\/li>\n\n\n\n<li>\u4f7f\u7528 Listener \u548c StatusListener \u76d1\u89c6\u52a8\u753b\u72b6\u6001\u53d8\u5316\u3002<\/li>\n<\/ul>\n\n\n\n<p>CurvedAnimation \u548c AnimationController\uff08\u4e0b\u9762\u5c06\u4f1a\u8be6\u7ec6\u8bf4\u660e\uff09\u90fd\u662f Animation \u7c7b\u578b<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%8A%A8%E7%94%BB%E9%80%9A%E7%9F%A5\"><\/span>\u52a8\u753b\u901a\u77e5<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u4e00\u4e2a Animation \u5bf9\u8c61\u53ef\u4ee5\u6709\u4e0d\u6b62\u4e00\u4e2a Listener \u548c StatusListener\uff0c\u7528 addListener() \u548c addStatusListener() \u6765\u5b9a\u4e49\u3002\u5f53\u52a8\u753b\u503c\u6539\u53d8\u65f6\u8c03\u7528 Listener\u3002 Listener \u6700\u5e38\u7528\u7684\u64cd\u4f5c\u662f\u8c03\u7528 setState() \u8fdb\u884c\u91cd\u5efa\u3002\u5f53\u4e00\u4e2a\u52a8\u753b\u5f00\u59cb\uff0c\u7ed3\u675f\uff0c\u524d\u8fdb\u6216\u540e\u9000\u65f6\uff0c\u4f1a\u8c03\u7528 StatusListener\uff0c\u7528 AnimationStatus \u6765\u5b9a\u4e49<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"AnimationController\"><\/span>AnimationController<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p><code>AnimationController<\/code> \u662f\u7528\u4e8e\u63a7\u5236\u52a8\u753b\u7684\u6838\u5fc3\u7c7b\u3002\u5b83\u63d0\u4f9b\u4e86\u4e00\u4e9b\u5e38\u7528\u7684\u65b9\u6cd5\u548c\u5c5e\u6027\u6765\u7ba1\u7406\u52a8\u753b\u7684\u72b6\u6001\u548c\u884c\u4e3a\u3002\u4ee5\u4e0b\u662f\u4e00\u4e9b\u5e38\u7528\u7684\u63a7\u5236\u51fd\u6570\u53ca\u5176\u4f5c\u7528\uff1a<\/p>\n\n\n\n<p>forward()<br>\u4f5c\u7528\uff1a\u4f7f\u52a8\u753b\u4ece\u5f53\u524d\u503c\u5411\u524d\u63a8\u8fdb\u5230\u7ed3\u675f\u503c\u3002<br>\u7528\u6cd5\uff1a\u901a\u5e38\u5728\u52a8\u753b\u5f00\u59cb\u65f6\u8c03\u7528<\/p>\n\n\n\n<p>reverse()<br>\u4f5c\u7528\uff1a\u4f7f\u52a8\u753b\u4ece\u5f53\u524d\u503c\u5411\u540e\u63a8\u8fdb\u5230\u8d77\u59cb\u503c\u3002<br>\u7528\u6cd5\uff1a\u901a\u5e38\u5728\u52a8\u753b\u7ed3\u675f\u540e\u8c03\u7528\uff0c\u4ee5\u53cd\u5411\u64ad\u653e\u52a8\u753b<\/p>\n\n\n\n<p>stop()<br>\u4f5c\u7528\uff1a\u505c\u6b62\u52a8\u753b\u5e76\u4fdd\u6301\u5728\u5f53\u524d\u503c\u3002<br>\u7528\u6cd5\uff1a\u53ef\u4ee5\u5728\u9700\u8981\u65f6\u505c\u6b62\u52a8\u753b\uff0c\u4f8b\u5982\u7528\u6237\u4ea4\u4e92\u65f6\u3002<\/p>\n\n\n\n<p>repeat({bool reverse = false})<br>\u4f5c\u7528\uff1a\u4f7f\u52a8\u753b\u5728\u8fbe\u5230\u7ed3\u675f\u503c\u540e\u91cd\u65b0\u5f00\u59cb\uff0c\u53ef\u4ee5\u9009\u62e9\u662f\u5426\u53cd\u5411\u64ad\u653e\u3002<br>\u7528\u6cd5\uff1a\u7528\u4e8e\u521b\u5efa\u5faa\u73af\u52a8\u753b<\/p>\n\n\n\n<p>forward(from)<br>\u4f5c\u7528\uff1a\u4ece\u6307\u5b9a\u7684\u503c\u5f00\u59cb\u5411\u524d\u63a8\u8fdb\u52a8\u753b\u3002<br>\u7528\u6cd5\uff1a\u53ef\u4ee5\u7528\u4e8e\u4ece\u52a8\u753b\u7684\u4e2d\u95f4\u72b6\u6001\u5f00\u59cb\u64ad\u653e\u3002<\/p>\n\n\n\n<p>animateTo(double value, {Duration? duration, Curve curve = Curves.linear})<br>\u4f5c\u7528\uff1a\u5c06\u52a8\u753b\u63a7\u5236\u5668\u7684\u503c\u52a8\u753b\u5230\u6307\u5b9a\u7684\u503c\u3002<br>\u7528\u6cd5\uff1a\u7528\u4e8e\u5728\u7279\u5b9a\u65f6\u95f4\u5185\u5e73\u6ed1\u8fc7\u6e21\u5230\u4e00\u4e2a\u65b0\u7684\u503c<\/p>\n\n\n\n<p>dispose()<br>\u4f5c\u7528\uff1a\u91ca\u653e\u52a8\u753b\u63a7\u5236\u5668\u5360\u7528\u7684\u8d44\u6e90\u3002<br>\u7528\u6cd5\uff1a\u5728\u4e0d\u518d\u9700\u8981\u52a8\u753b\u63a7\u5236\u5668\u65f6\u8c03\u7528\uff0c\u901a\u5e38\u5728 dispose \u65b9\u6cd5\u4e2d\u3002<\/p>\n\n\n\n<ul><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%8A%A8%E7%94%BB%E7%A4%BA%E4%BE%8B\"><\/span>\u52a8\u753b\u793a\u4f8b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%88%9D%E5%A7%8B%E5%8C%96\"><\/span>\u521d\u59cb\u5316<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>controller =\n        AnimationController(duration: const Duration(seconds: 2), vsync: this);\n    animation = CurvedAnimation(parent: controller, curve: Curves.easeIn)\n      ..addStatusListener((status) {\n        print('$status');\n        if (status == AnimationStatus.completed) {\n          controller.reverse();\n        } else if (status == AnimationStatus.dismissed) {\n          controller.forward();\n        }\n      });\n\n    controller.forward();<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>scaleAnimation = Tween&lt;double&gt;(begin: 0.0, end: 1.0).animate(animation);\n\nclass ScaleBasicAnimation extends StatelessWidget {\n  const ScaleBasicAnimation(\n      {required this.child, required this.scaleAnimation, super.key});\n\n  final Widget child;\n  final Animation&lt;double&gt; scaleAnimation;\n\n  @override\n  Widget build(BuildContext context) {\n    return Center(\n      child: ScaleTransition(\n        scale: scaleAnimation,\n        child: child,\n      ),\n    );\n  }\n}\n\nScaleBasicAnimation(scaleAnimation: scaleAnimation, child: const LogoWidget()),<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%97%8B%E8%BD%AC\"><\/span>\u65cb\u8f6c<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>rotationAnimation = Tween&lt;double&gt;(begin: 0.0, end: 1.0).animate(animation);\n\nclass RotationBasicAnimation extends StatelessWidget {\n  const RotationBasicAnimation(\n      {required this.child, required this.rotateAnimation, super.key});\n\n  final Widget child;\n  final Animation&lt;double&gt; rotateAnimation;\n\n  @override\n  Widget build(BuildContext context) {\n    return Center(\n      child: RotationTransition(\n        turns: rotateAnimation,\n        child: child,\n      ),\n    );\n  }\n}\n\nRotationBasicAnimation(\n                  rotateAnimation: rotationAnimation,\n                  child: const LogoWidget()),<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%B7%A1%E5%85%A5%E6%B7%A1%E5%87%BA\"><\/span>\u6de1\u5165\u6de1\u51fa<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>opacityAnimation = Tween&lt;double&gt;(begin: 0.1, end: 1.0).animate(animation);\n\nclass FadeBasicAnimation extends StatelessWidget {\n  const FadeBasicAnimation(\n      {required this.child, required this.opacityAnimation, super.key});\n\n  final Widget child;\n  final Animation&lt;double&gt; opacityAnimation;\n\n  @override\n  Widget build(BuildContext context) {\n    return Center(\n      child: FadeTransition(opacity: opacityAnimation, child: child),\n    );\n  }\n}\nFadeBasicAnimation(opacityAnimation: opacityAnimation,\n                  child: const LogoWidget()),<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E5%B9%B3%E7%A7%BB\"><\/span>\u5e73\u79fb<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code> offsetAnimation = Tween&lt;Offset&gt;(\n            begin: const Offset(0.0, 0.0), end: const Offset(0.0, 1.0))\n        .animate(animation);\n\nclass SildeBasicAnimation extends StatelessWidget {\n  const SildeBasicAnimation(\n      {required this.child, required this.offsetAnimation, super.key});\n\n  final Widget child;\n  final Animation&lt;Offset&gt; offsetAnimation;\n\n  @override\n  Widget build(BuildContext context) {\n    return SlideTransition(\n      position: offsetAnimation,\n      child: child,\n    );\n  }\n}\nSildeBasicAnimation(offsetAnimation: offsetAnimation, child: const LogoWidget()),<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E8%BF%87%E6%B8%A1Container\"><\/span>\u8fc7\u6e21Container<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>AnimatedContainer(\n            \/\/ Use the properties stored in the State class.\n            width: _width,\n            height: _height,\n            decoration: BoxDecoration(\n              color: _color,\n              borderRadius: _borderRadius,\n            ),\n            \/\/ Define how long the animation should take.\n            duration: const Duration(seconds: 1),\n            \/\/ Provide an optional curve to make the animation feel smoother.\n            curve: Curves.fastOutSlowIn,\n          ),\n        ),\n\n  onPressed: () {\n            \/\/ Use setState to rebuild the widget with new values.\n            setState(() {\n              \/\/ Create a random number generator.\n              final random = Random();\n\n              \/\/ Generate a random width and height.\n              _width = random.nextInt(300).toDouble();\n              _height = random.nextInt(300).toDouble();\n\n              \/\/ Generate a random color.\n              _color = Color.fromRGBO(\n                random.nextInt(256),\n                random.nextInt(256),\n                random.nextInt(256),\n                1,\n              );\n\n              \/\/ Generate a random border radius.\n              _borderRadius =\n                  BorderRadius.circular(random.nextInt(100).toDouble());\n            });<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%B7%A1%E5%85%A5%E6%B7%A1%E5%87%BAwidget\"><\/span>\u6de1\u5165\u6de1\u51fawidget<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>AnimatedOpacity(\n          \/\/ If the widget is visible, animate to 0.0 (invisible).\n          \/\/ If the widget is hidden, animate to 1.0 (fully visible).\n          opacity: _visible ? 1.0 : 0.0,\n          duration: const Duration(milliseconds: 500),\n          \/\/ The green box must be a child of the AnimatedOpacity widget.\n          child: Container(\n            width: 200,\n            height: 200,\n            color: Colors.green,\n          ),\n        )<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u52a8\u753b\u7c7b\u578b \u5e38\u89c1\u52a8\u753b\u6a21\u5f0f \u57fa\u672c\u52a8\u753b\u6982\u5ff5\u548c\u7c7b CurvedAnimation \u548c AnimationControl [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[],"blocksy_meta":[],"featured_image_urls":{"full":"","thumbnail":"","medium":"","medium_large":"","large":"","1536x1536":"","2048x2048":""},"post_excerpt_stackable":"<p>\u76ee\u5f55 Toggle \u52a8\u753b\u7c7b\u578b\u5e38\u89c1\u52a8\u753b\u6a21\u5f0f\u57fa\u672c\u52a8\u753b\u6982\u5ff5\u548c\u7c7b\u52a8\u753b\u901a\u77e5AnimationController\u52a8\u753b\u793a\u4f8b\u521d\u59cb\u5316\u65cb\u8f6c\u6de1\u5165\u6de1\u51fa\u5e73\u79fb\u8fc7\u6e21Container\u6de1\u5165\u6de1\u51fawidget \u52a8\u753b\u7c7b\u578b \u8865\u95f4\u52a8\u753b \u57fa\u4e8e&hellip;<\/p>\n","category_list":"<a href=\"https:\/\/www.ai.ixriver.com\/?cat=20\" rel=\"category\">Flutter<\/a>","author_info":{"name":"admin","url":"https:\/\/www.ai.ixriver.com\/?author=1"},"comments_num":"0 comments","_links":{"self":[{"href":"https:\/\/www.ai.ixriver.com\/index.php?rest_route=\/wp\/v2\/posts\/374"}],"collection":[{"href":"https:\/\/www.ai.ixriver.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ai.ixriver.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ai.ixriver.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ai.ixriver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=374"}],"version-history":[{"count":21,"href":"https:\/\/www.ai.ixriver.com\/index.php?rest_route=\/wp\/v2\/posts\/374\/revisions"}],"predecessor-version":[{"id":684,"href":"https:\/\/www.ai.ixriver.com\/index.php?rest_route=\/wp\/v2\/posts\/374\/revisions\/684"}],"wp:attachment":[{"href":"https:\/\/www.ai.ixriver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=374"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ai.ixriver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=374"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ai.ixriver.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=374"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}