{"id":32471,"date":"2024-11-01T09:09:14","date_gmt":"2024-11-01T09:09:14","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=32471"},"modified":"2024-11-01T11:55:10","modified_gmt":"2024-11-01T11:55:10","slug":"flutter-course-11-4-textfield-widget","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/32471\/","title":{"rendered":"Flutter Course: 11.4 TextField Widget"},"content":{"rendered":"<p>Flutter is an open-source UI software development kit (SDK) developed by Google, used for creating mobile, web, and desktop applications. In this course, we will look at the <code>TextField<\/code> widget, one of Flutter&#8217;s UI components. The <code>TextField<\/code> is a basic widget that allows users to input text. Let&#8217;s explore the basic usage of the <code>TextField<\/code> widget, its various features, and how to customize it in detail.<\/p>\n<h2>1. Basic Structure of TextField<\/h2>\n<p>The <code>TextField<\/code> widget is a basic input field used to receive user input. To use it, you can create a widget with the following basic structure:<\/p>\n<pre><code>TextField(\n  decoration: InputDecoration(\n    border: OutlineInputBorder(), \/\/ Border style for the input field\n    labelText: 'Text to enter',   \/\/ Label text\n    hintText: 'Enter here',   \/\/ Hint text\n  ),\n  onChanged: (text) {\n    \/\/ Callback that is called when the text changes\n    print('Entered text: $text');\n  },\n)<\/code><\/pre>\n<p>Here, the <code>decoration<\/code> property defines the appearance of the input field. The <code>labelText<\/code> defines the label for the input field, and the <code>hintText<\/code> serves as a placeholder in the input field. The <code>onChanged<\/code> property is a callback function that is called every time the user enters text.<\/p>\n<h2>2. Key Properties of the TextField Widget<\/h2>\n<p>The <code>TextField<\/code> widget has several important properties that allow for finer control over the widget\u2019s behavior and appearance. The following are the most commonly used properties:<\/p>\n<ul>\n<li><code>controller<\/code>: Uses an instance of <code>TextEditingController<\/code> to keep track of the current state of the input field.<\/li>\n<li><code>obscureText<\/code>: Set to <code>true<\/code> to hide text for secure input like passwords.<\/li>\n<li><code>keyboardType<\/code>: Set the type of keyboard that pops up for an improved user experience.<\/li>\n<li><code>maxLines<\/code>: Set the maximum number of lines inputted.<\/li>\n<li><code>onSubmitted<\/code>: A callback that is called when the user completes and submits their input.<\/li>\n<\/ul>\n<p>Here is how to use these properties:<\/p>\n<pre><code>TextField(\n  controller: myController,\n  obscureText: true,\n  keyboardType: TextInputType.emailAddress, \n  maxLines: 1, \n  onSubmitted: (value) {\n    print('User entered value: $value');\n  },\n)<\/code><\/pre>\n<h2>3. Using TextEditingController<\/h2>\n<p>You can use the <code>TextEditingController<\/code> to manage data and state related to the input field. This allows you to get or set the value in the input field. Here is an example of using the <code>TextEditingController<\/code>:<\/p>\n<pre><code>class MyTextFieldWidget extends StatefulWidget {\n  @override\n  _MyTextFieldWidgetState createState() =&gt; _MyTextFieldWidgetState();\n}\n\nclass _MyTextFieldWidgetState extends State<mytextfieldwidget> {\n  TextEditingController myController = TextEditingController();\n\n  @override\n  Widget build(BuildContext context) {\n    return Column(\n      children: [\n        TextField(\n          controller: myController,\n          decoration: InputDecoration(\n            border: OutlineInputBorder(),\n            labelText: 'Enter your email',\n          ),\n        ),\n        ElevatedButton(\n          onPressed: () {\n            print('Entered email: ${myController.text}');\n          },\n          child: Text('Submit'),\n        ),\n      ],\n    );\n  }\n\n  @override\n  void dispose() {\n    \/\/ Release the controller on widget removal to prevent memory leaks.\n    myController.dispose();\n    super.dispose();\n  }\n}<\/mytextfieldwidget><\/code><\/pre>\n<h2>4. Different Types of TextField<\/h2>\n<p>Now let&#8217;s learn about the various types of <code>TextField<\/code>. In addition to the basic input field, there are multiple types of input fields you can customize.<\/p>\n<h3>4.1. Password Input Field<\/h3>\n<p>To create a password input field, set the <code>obscureText<\/code> property to <code>true<\/code>. Here is an example of a password input field:<\/p>\n<pre><code>TextField(\n  obscureText: true,\n  decoration: InputDecoration(\n    border: OutlineInputBorder(),\n    labelText: 'Enter your password',\n  ),\n)<\/code><\/pre>\n<h3>4.2. Email Address Input Field<\/h3>\n<p>When accepting email input, set the <code>keyboardType<\/code> to <code>TextInputType.emailAddress<\/code> to display a dedicated keyboard for emails:<\/p>\n<pre><code>TextField(\n  keyboardType: TextInputType.emailAddress,\n  decoration: InputDecoration(\n    border: OutlineInputBorder(),\n    labelText: 'Enter your email',\n  ),\n)<\/code><\/pre>\n<h3>4.3. Multi-line Input Field<\/h3>\n<p>To support the input of multiple lines of text, set the <code>maxLines<\/code> property:<\/p>\n<pre><code>TextField(\n  maxLines: 5,\n  decoration: InputDecoration(\n    border: OutlineInputBorder(),\n    labelText: 'Enter content here',\n  ),\n)<\/code><\/pre>\n<h2>5. Styling the TextField<\/h2>\n<p>You can style the input field to make it more beautiful and intuitive using various properties. Let&#8217;s use the properties of <code>InputDecoration<\/code>?<\/p>\n<ul>\n<li><code>fillColor<\/code>: Sets the background color of the input field.<\/li>\n<li><code>focusedBorder<\/code>: Sets the border style when the input field is focused.<\/li>\n<li><code>enabledBorder<\/code>: Sets the border style when the input field is active.<\/li>\n<li><code>errorText<\/code>: Sets the text to display in case of input errors.<\/li>\n<\/ul>\n<p>An example is as follows:<\/p>\n<pre><code>TextField(\n  decoration: InputDecoration(\n    fillColor: Colors.lightBlueAccent,\n    filled: true,\n    focusedBorder: OutlineInputBorder(\n      borderSide: BorderSide(color: Colors.green, width: 2.0),\n    ),\n    enabledBorder: OutlineInputBorder(\n      borderSide: BorderSide(color: Colors.blue, width: 2.0),\n    ),\n    errorText: 'Invalid input',\n  ),\n)<\/code><\/pre>\n<h2>6. Validation and Verification of TextField<\/h2>\n<p>You can add a simple validation logic to check the validity of the text entered by the user. For example, you can perform basic validation for email format:<\/p>\n<pre><code>String? validateEmail(String? value) {\n  if (value == null || value.isEmpty) {\n    return 'Please enter an email';\n  }\n  String pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$';\n  RegExp regex = RegExp(pattern);\n  if (!regex.hasMatch(value)) {\n    return 'Invalid email format';\n  }\n  return null;\n}\n\nTextField(\n  decoration: InputDecoration(\n    errorText: validateEmail(myController.text),\n  ),\n)\n<\/code><\/pre>\n<h2>7. TextField and TextFormField<\/h2>\n<p>To handle input field validation and state management more efficiently, you can use the <code>TextFormField<\/code> widget. The <code>TextFormField<\/code> is used with the <code>Form<\/code> widget, providing better validation and state management:<\/p>\n<pre><code>Form(\n  child: Column(\n    children: <widget>[\n      TextFormField(\n        decoration: InputDecoration(labelText: 'Enter your email'),\n        validator: validateEmail,\n      ),\n      ElevatedButton(\n        onPressed: () {\n          \/\/ submit logic\n        },\n        child: Text('Submit'),\n      ),\n    ],\n  ),\n)<\/widget><\/code><\/pre>\n<h2>8. TextField and FocusNode<\/h2>\n<p>You can use a <code>FocusNode<\/code> to control focus on the input field. Controlling focus allows you to perform specific actions or manage input:<\/p>\n<pre><code>FocusNode myFocusNode = FocusNode();\n\n@override\nvoid initState() {\n  super.initState();\n  myFocusNode.addListener(() {\n    print('Focus state changed: ${myFocusNode.hasFocus}');\n  });\n}\n\n@override\nWidget build(BuildContext context) {\n  return TextField(\n    focusNode: myFocusNode,\n    decoration: InputDecoration(labelText: 'Test focus here'),\n  );\n}\n<\/code><\/pre>\n<h2>9. Conclusion<\/h2>\n<p>In this tutorial, we took an in-depth look at the <code>TextField<\/code> widget in Flutter. The <code>TextField<\/code> is a very basic UI component that is essential in any app that requires user input. By utilizing various properties and features, we can provide a more intuitive and useful user experience.<\/p>\n<p>While developing mobile and web applications using Flutter, you can enhance the user interface by leveraging the various uses of <code>TextField<\/code>. I hope this tutorial has been helpful for your Flutter development!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Flutter is an open-source UI software development kit (SDK) developed by Google, used for creating mobile, web, and desktop applications. In this course, we will look at the TextField widget, one of Flutter&#8217;s UI components. The TextField is a basic widget that allows users to input text. Let&#8217;s explore the basic usage of the TextField &hellip; <a href=\"https:\/\/atmokpo.com\/w\/32471\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Flutter Course: 11.4 TextField Widget&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[151],"tags":[],"class_list":["post-32471","post","type-post","status-publish","format-standard","hentry","category-flutter-course"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Flutter Course: 11.4 TextField Widget - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/atmokpo.com\/w\/32471\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Flutter Course: 11.4 TextField Widget - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Flutter is an open-source UI software development kit (SDK) developed by Google, used for creating mobile, web, and desktop applications. In this course, we will look at the TextField widget, one of Flutter&#8217;s UI components. The TextField is a basic widget that allows users to input text. Let&#8217;s explore the basic usage of the TextField &hellip; \ub354 \ubcf4\uae30 &quot;Flutter Course: 11.4 TextField Widget&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/32471\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:09:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:55:10+00:00\" \/>\n<meta name=\"author\" content=\"root\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:site\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:label1\" content=\"\uae00\uc4f4\uc774\" \/>\n\t<meta name=\"twitter:data1\" content=\"root\" \/>\n\t<meta name=\"twitter:label2\" content=\"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/32471\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/32471\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Flutter Course: 11.4 TextField Widget\",\"datePublished\":\"2024-11-01T09:09:14+00:00\",\"dateModified\":\"2024-11-01T11:55:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/32471\/\"},\"wordCount\":593,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Flutter course\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/32471\/\",\"url\":\"https:\/\/atmokpo.com\/w\/32471\/\",\"name\":\"Flutter Course: 11.4 TextField Widget - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:09:14+00:00\",\"dateModified\":\"2024-11-01T11:55:10+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/32471\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/32471\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/32471\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Flutter Course: 11.4 TextField Widget\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/atmokpo.com\/w\/#website\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/atmokpo.com\/w\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"contentUrl\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"width\":400,\"height\":400,\"caption\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\"},\"image\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/bebubo4\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\",\"name\":\"root\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"caption\":\"root\"},\"sameAs\":[\"http:\/\/atmokpo.com\/w\"],\"url\":\"https:\/\/atmokpo.com\/w\/author\/root\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Flutter Course: 11.4 TextField Widget - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/atmokpo.com\/w\/32471\/","og_locale":"ko_KR","og_type":"article","og_title":"Flutter Course: 11.4 TextField Widget - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Flutter is an open-source UI software development kit (SDK) developed by Google, used for creating mobile, web, and desktop applications. In this course, we will look at the TextField widget, one of Flutter&#8217;s UI components. The TextField is a basic widget that allows users to input text. Let&#8217;s explore the basic usage of the TextField &hellip; \ub354 \ubcf4\uae30 \"Flutter Course: 11.4 TextField Widget\"","og_url":"https:\/\/atmokpo.com\/w\/32471\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:09:14+00:00","article_modified_time":"2024-11-01T11:55:10+00:00","author":"root","twitter_card":"summary_large_image","twitter_creator":"@bebubo4","twitter_site":"@bebubo4","twitter_misc":{"\uae00\uc4f4\uc774":"root","\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04":"4\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/32471\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/32471\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Flutter Course: 11.4 TextField Widget","datePublished":"2024-11-01T09:09:14+00:00","dateModified":"2024-11-01T11:55:10+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/32471\/"},"wordCount":593,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Flutter course"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/32471\/","url":"https:\/\/atmokpo.com\/w\/32471\/","name":"Flutter Course: 11.4 TextField Widget - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:09:14+00:00","dateModified":"2024-11-01T11:55:10+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/32471\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/32471\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/32471\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Flutter Course: 11.4 TextField Widget"}]},{"@type":"WebSite","@id":"https:\/\/atmokpo.com\/w\/#website","url":"https:\/\/atmokpo.com\/w\/","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","description":"","publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/atmokpo.com\/w\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/atmokpo.com\/w\/#organization","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","url":"https:\/\/atmokpo.com\/w\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/","url":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","contentUrl":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","width":400,"height":400,"caption":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8"},"image":{"@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/bebubo4"]},{"@type":"Person","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7","name":"root","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","caption":"root"},"sameAs":["http:\/\/atmokpo.com\/w"],"url":"https:\/\/atmokpo.com\/w\/author\/root\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/32471","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/comments?post=32471"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/32471\/revisions"}],"predecessor-version":[{"id":32472,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/32471\/revisions\/32472"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=32471"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=32471"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=32471"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}