Error border TextFormField is of double width in Flutter - flutter

I am facing an ui issue with TextFormField error border in focused state.
When I tapped inside TextFormField, width is getting double on focus as below screen shot
Could you please guide me what am i doing wrong here.

You are not doing anything wrong, this is a material design behavior, if you want to disable it , try this:
TextField(
decoration: InputDecoration(
label: Text('label'),
floatingLabelBehavior: FloatingLabelBehavior.never,// <--- add this
),
),

Related

Is there a way for the showTimePicker() in Flutter to not reset any value in TextInputField?

I implemented a page in my Flutter application that has a text input field and 2 time pickers that are activated by pressing the button to make them appear. The issue is that if I have a new value in the TextInputField and use one of the time pickers, after I'm done what I have typed in the input field will just reset.
Code snippet from the input field:
SizedBox(
width: 350,
child: TextField(
controller: titleController,
decoration: const InputDecoration(
border: OutlineInputBorder(),
hintText: 'Title',
),
onChanged: (value) {
title = value;
},
),
),
I've tried keeping the value of what is being typed in through a titleController and I have also attempted using the onChanged() method and a separate variable to keep the value in there. These solutions both didn't work for me, however. Is there any other solution to this issue?
If your TextField inside a stateless widget it will keep clearing the value of the controller everytime something pop on the screen, so try to put your TextField inside a stateful widget

Flutter Layout: How to get focus inside a textformfield wrapped on a Container

So I have this Container with a specific decoration border, and as a child I have the TextFormField with another styled border using the parameter enabledBorder.
My problem is: I have to make a double click to show the cursor and be able to write on my textformfield, because the focus only gets the container decoration and do not gets the focus from the inside of my TextFormField.
Here is my code:
onFocusChange: (focus) {
print(focus);
},
child: Focus(
child: Container(
decoration: _focusNode.hasFocus && widget.errorText == null
? BambamShadows.dropShadowSelected()
: null,
child: TextFormField(
cursorColor: BambamColors.brandBlack,
focusNode: _focusNode,
inputFormatters: widget.inputFormatters,
enabled: widget.enabled,
onChanged: widget.onChanged,
How can I get both Focus inside Container and TextFormField?
Check out this package # https://pub.dev/packages/indexed it'll grant you the same equivalent property that Z-index has in CSS which will allow you to position elements in a stack based on the index; so based on your question if your txtformField has a higher index it wouldn't be "below" the container (if that makes sense);
Also you can always consider modifying your UI to focus on using Stack (very good documentation about it here: https://medium.flutterdevs.com/stack-and-positioned-widget-in-flutter-3d1a7b30b09a)
I'd try indexed, else I'd clone your current java to implement a stack UI structure and test different variants till you nail it;
Try this autofocus: true, autofocus is a property in TextFormField class

Flutter, widget next to the last letter of TextFormField

I want to move the box that is full of red background over there to the position of the empty box.
In other words, I want to insert a container right next to the point where TextFormField ends.
Is this something that can be implemented in Flutter? Or is there no way?
-- UPDATE
I actually want to add a "send" Icon to the end of the text. All the examples I looked up were always going to the end of the Containers due to Rows, as shown in the photos I posted. Since the position of the send icon will always change, depending on the length of the text, in real time, this problem feels very difficult to me. and also for your information, this is not Text, but TextField or TextFormField widget.
Unfortunately, there is no way of doing this since TextFormField accepts string only and not a widget. Also, according to material guidelines, any such widget should be at the end of the text field as a suffix such as:
TextField(
controller: _controller,
decoration: InputDecoration(
hintText: "Enter a message",
suffixIcon: IconButton(
onPressed: () => _controller.clear(),
icon: Icon(Icons.clear),
),
),
)
May I ask what is the purpose?! maybe we can help find better solution then?
but if we have to then I can think of 2 ways.
1- Include the box as a Text - For example ▀ (Alt + 223)
var box = ▀
Text("efwewewefwewefe$box"),
2- Option 2: Wrap in a Stack widget
Stack(
children: [
Text("efwewewefwewefe"),
Container(height:5, width:5, color: Colors.red]),

How to put the label above the border and not over in a TextFormField in Flutter?

How to put the label text of an TextFormField above the border and not over it. How can I archive that?
I already tryed to use the floatingLabelBehavior, but this puts the label over the border.
TextFormField(
decoration: InputDecoration(floatingLabelBehavior:FloatingLabelBehavior.always),
),

How to disable onscreen keyboard on startup of view in Flutter?

I started out writing a Flutter app to remotely control some radio stream. I ran into a problem when adding a TextFormField to display the stream's current volume setting. (The reason why I opted for a TextFormField instead of simply Text is that I wanted to use the field for both showing the current setting and letting the user change the current value in one place.)
The problem is the following: When I added the TextFormField (located inside the green bar in the screen shot below, after the text Vol:), I realized that whenever I started this view/page, the onboard keyboard always showed up by default when entering the page.
Instead, I would like the keyboard to only show up when the user clicks inside the TextFormField.
The code for the TextFormField looks as follows:
TextFormField(
onFieldSubmitted: (value){
print("The value entered is : $value");
},
// Define keyboard type
keyboardType: TextInputType.number,
// Make sure user doesn't enter letters or punctuation
inputFormatters: <TextInputFormatter>[WhitelistingTextInputFormatter.digitsOnly],
validator: (val){
return null;
},
autofocus: true,
controller: volTextEditingController,
style: TextStyle(
color: Colors.white,
fontSize: 16,
),
decoration: InputDecoration(
border: InputBorder.none,
),
maxLines: 1,
)
So, I was wondering whether someone knows how to prevent the keyboard from appearing on startup of the shown view/page. Thanks in advance! The full code, if needed, is available on GitGub.
I just figured out that this problem was caused by the setting autofocus: true. So, removing this solves the issue.