I would like to make a custom checkbox button with rounded corners.
Because I wasn't able to do it with a CheckBox widget, I simply created a container with rounded corners (and some styling depending on whether the "value" is true) and wrapped it in InkWell.
InkWell
Container
The problem is that the checkbox (container) is quite small and you have to tap precisely on the Container. When you use CheckBox or any other button, there is some tolerance (meaning that you can click slightly off the button). How can I achieve this with InkWell?
The only idea I have is to wrap the Container in Padding first:
InkWell
Padding
Container
Is this the only solution, or is there another way of making a "button" with InkWell, where the onTap function will execute even if you don't touch the button precisely?
Related
The problem is that when one of the inkwell is pressed, the other does not change its state.
Interactive example: https://dartpad.dev/?id=cd60f05128d673eb8625b4dc1885cd91
I need 2 inkwell to work as one. When you pressed circle, bar will pressed too, when you left circle, bar will change state to empty too. And vice versa.
My solution is to replace Inkwells with AnimatedContainer and check with GestureDetector whenever onTapDown and onTapUp, and change color of AnimatedContainer. Simple example: https://dartpad.dev/?id=551b0ffbd3d15352d89748329d3bd135
I've been trying to make Bookmark button's onTap work because it was working only sometimes.
I'm using the Expanded widget in the Bookmark button but when I toggle debug point on, I saw that its area is shrunk and that's why taps are not working. I give this widget size and added HitTestBehavior.translucent on GestureDetector but no luck.
Any idea how I can fit this button without losing its tap area?
I want to show my own page on dropdown button tap, then item selected on page should be set as dropdown button value.
So basically, I need DropdownButton without any popup on tap. When I use onTap still default popup will be shown, how to prevent that?
why you don't use a button instead? or you can try to create an Inkwell put a container on its child and make it look like a button and write your code inside Inkwell OnTap(){}
1- Pass null to items parameter to disable the button.
2- You'll notice icon's color will be grey with disabled button, you can change it by setting color of the icon you send to icon parameter or send color directly to iconDisabledColor parameter.
3- You'll not use value parameter, instead you'll just use hint to show both your hint and your value. and update it using your state management after you pick new value from your own page.
4- Wrap your DropdownButton with GestureDetector or InkWell to show your own page when you tap on the button.
5- If you want to customize your DropdownButton shape, size and more. You can try my new package DropdownButton2. It's simple, easy, based on Flutter's core DropdownButton and have lots of features.
I want to add a buttombar to my application Contains only just one text with background color .
I need it to write the copyright in my application, but I find just that I have to add At least a two-item
In the list,
I don't need this
Just i want to add a single one text with a background color
In your case you do not need a bottombar widget.
you can create a container with specific height and background color and center a text widget in the container.
If you are looking to add bottomNavigationBar with one item only you can just write your own widget in the bottom navigation bar like a Container and set a background of your choice and give it a child widget wrapped in an INKWELL or GESTUREDETECTOR and if it overlaps with the Phone's GUI you can wrap the inkwell with SAFEAREA widget
When we want to achieve a button, we can choose raisedButton in flutter lib, also can a Container with onTap() function. So what's the difference between the two and which one should we choose in different situation?
Container function doesnot have onTap option, but you can achieve it by wrapping it in Guesture detector or Inkwell. There are no changes in the backend. But Raised button gives you the elevation, and animation on tap. You can also do it in the container, but it requires you to manually do it.
If you want a simple button quickly use RaisedButton.
If you want a more complex one, use Container or mixture of Containers, RaisedButton etc.
I am gonna offer something different... A tale of a treasure that is known to have answers to many questions, use cases and sometimes even examples. The name of this treasure is: official documentation. ;)
RaisedButton
A raised button is based on a Material widget whose Material.elevation increases when the button is pressed. Use raised buttons to add dimension to otherwise mostly flat layouts, e.g. in long busy lists of content, or in wide spaces. Avoid using raised buttons on already-raised content such as dialogs or cards.
Container
A convenience widget that combines common painting, positioning, and
sizing widgets.
GestureDetector
A widget that detects gestures. Attempts to recognize gestures that
correspond to its non-null callbacks. If this widget has a child, it
defers to that child for its sizing behavior. If it does not have a
child, it grows to fit the parent instead. By default a
GestureDetector with an invisible child ignores touches; this behavior
can be controlled with behavior. GestureDetector also listens for
accessibility events and maps them to the callbacks. To ignore
accessibility events, set excludeFromSemantics to true. See
flutter.dev/gestures/ for additional information. Material design
applications typically react to touches with ink splash effects. The
InkWell class implements this effect and can be used in place of a
GestureDetector for handling taps.
InkWell
A rectangular area of a Material that responds to touch. For a variant
of this widget that does not clip splashes, see InkResponse... The
InkWell widget must have a Material widget as an ancestor. The
Material widget is where the ink reactions are actually painted. This
matches the material design premise wherein the Material is what is
actually reacting to touches by spreading ink.
Well, technically you are right, they can both react to a click event. But a RaisedButton will have all the styles specific to the target platform taken care of for you (it inherits from MaterialButton).
note that it's the same in html: you can use a regular div with a click handler or use a button tag. The button will have a few styles already taken care of for you...