Dynamic Page Response --- We can use most of the [built-in widgets](https://pub.dev/packages/json_dynamic_widget#built-in-widgets) ([usage examples](https://peiffer-innovations.github.io/json_dynamic_widget/web/index.html)) in Flutter into our backend response. Also, we can write our [custom widget builders](https://hackmd.io/4U1hPHrsS628lenln4AHyQ) too. Here is the example response model: ```gherkin= { "type": "padding", "args": { "padding": { "left": 32, "right": 32 }, "child": { "type": "column", "args": { "children": [ { "type": "otp_title_widget", "args": { "title": "Şifre Doğrulama" } }, { "type": "otp_message_widget", "args": { "message": "Lütfen 5** ** 45 ile biten cep telefonunuza gelen doğrulama kodunu giriniz." } }, { "type": "otp_count_down_timer_widget", "args": { "duration": 120 } }, { "type": "otp_input_with_submit_button_widget", "args": { "title": "SMS Doğrulama Kodu", "button_text": "Devam", "otp_length": 6, "workflow": "login", "transition_id": "send-push-login-flow" } }, { "type": "spacer" }, { "type": "security_icon_widget", "args": { "paddingAll": 32 } } ] } } } } ``` ![](https://hackmd.io/_uploads/ryx00kyla.png) As we can see; padding and column widgets are built-in widgets; however otp_title_widget, otp_message_widget, otp_count_down_timer_widget, otp_input_with_submit_button_widget, spacer and security_icon_widget are custom widgets defined by ourselves. > Note that, we could use built-in text widget by passing additional style parameters instead of otp_title_widget and otp_message_widget; but custom widgets makes responses shorter.