DEV Community

loading...
Cover image for Flutter & Dart Tips - Week In Review #8

Flutter & Dart Tips - Week In Review #8

Offline Programmer
Full Stack Architect | Problem Solver | Lifelong Learner
・3 min read

Hello Reader,

This post is the 8th of the Flutter & Dart Tips series. My goal is to have at least 100 tips in this series. Do you know how many I have shared with you so far?

1- You can use the validator widget to validate the Form Inputs in your submit function and apply the validation condition on each TextFormField.


...

      void _submit() {
          final isValid = _formKey.currentState.validate();
          if (!isValid) {
              return;
          }
          _formKey.currentState.save();
      }

...

          Form(
          key: _formKey,
          child: Column(
            children: [
              Text(
                "Form-Validation",
                style: TextStyle(fontSize: 24.0, fontWeight: FontWeight.bold),
              ),
              //styling
              SizedBox(
                height: MediaQuery.of(context).size.width * 0.1,
              ),
              TextFormField(
                decoration: InputDecoration(labelText: 'E-Mail'),
                keyboardType: TextInputType.emailAddress,
                onFieldSubmitted: (value) {
                  //Validator
                },
                validator: (value) {
                  if (value.isEmpty ||
                      !RegExp(r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+")
                          .hasMatch(value)) {
                    return 'Enter a valid email!';
                  }
                  return null;
                },
              ),
              //box styling
              SizedBox(
                height: MediaQuery.of(context).size.width * 0.1,
              ),
              //text input
              TextFormField(
                decoration: InputDecoration(labelText: 'Password'),
                keyboardType: TextInputType.emailAddress,
                onFieldSubmitted: (value) {},
                obscureText: true,
                validator: (value) {
                  if (value.isEmpty) {
                    return 'Enter a valid password!';
                  }
                  return null;
                },
              ),
              SizedBox(
                height: MediaQuery.of(context).size.width * 0.1,
              ),
              RaisedButton(
                padding: EdgeInsets.symmetric(
                  vertical: 10.0,
                  horizontal: 15.0,
                ),
                child: Text(
                  "Submit",
                  style: TextStyle(
                    fontSize: 24.0,
                  ),
                ),
                onPressed: () => _submit(),
              )
            ],
          ),
        ),

...

Enter fullscreen mode Exit fullscreen mode

2- Use the ListView to create a horizontal list by setting the scrollDirection parameter to Axis.horizontal


...

      ListView(
        scrollDirection: Axis.horizontal,
        children: [
          Container(
            height: 480.0,
            width: 240.0,
            decoration: BoxDecoration(
              image: DecorationImage(
                image: AssetImage('images/image1.png'),
                fit: BoxFit.fill,
              ),
              shape: BoxShape.rectangle,
            ),
          ),
          Container(
            height: 480.0,
            width: 240.0,
            decoration: BoxDecoration(
              image: DecorationImage(
                image: AssetImage('images/image2.webp'),
                fit: BoxFit.fill,
              ),
              shape: BoxShape.rectangle,
            ),
          ),
          Container(
            height: 480.0,
            width: 240.0,
            decoration: BoxDecoration(
              image: DecorationImage(
                image: AssetImage('images/image3.jpg'),
                fit: BoxFit.fill,
              ),
              shape: BoxShape.rectangle,
            ),
          ),
          Container(
            height: 480.0,
            width: 240.0,
            decoration: BoxDecoration(
              image: DecorationImage(
                image: AssetImage('images/image4.jpg'),
                fit: BoxFit.fill,
              ),
              shape: BoxShape.rectangle,
            ),
          ),
        ],
      ),

...

Enter fullscreen mode Exit fullscreen mode

3- Center the FloatingActionButton by setting the floatingActionButtonLocation parameter as below


...

    floatingActionButton: FloatingActionButton(
      onPressed: () {},
      child: Icon(Icons.settings_voice),
    ),
    floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat,

...

Enter fullscreen mode Exit fullscreen mode

4- You can provide an action label in SnackBar to act when pressed on it as below


...

  final snackBar = SnackBar(
          content: const Text('Amazing SnackBar!'),
          action: SnackBarAction(
            label: 'Undo',
            onPressed: () {
              // Do something.
            },
          ),
        );

...

Enter fullscreen mode Exit fullscreen mode

5- Use the barrierDismissible property to prevent dismissing the AlertDialog when the user taps on the screen outside the alert box.


...

      showDialog<String>(
        context: context,
        barrierDismissible: false,
        builder: (BuildContext context) => AlertDialog(
          title: const Text('This is a title'),
          content: const Text('This is a description'),
          actions: <Widget>[
            TextButton(
              onPressed: () => Navigator.pop(context, 'Cancel'),
              child: const Text('Cancel'),
            ),
            TextButton(
              onPressed: () => Navigator.pop(context, 'OK'),
              child: const Text('OK'),
            ),
          ],
        ),
      ),

...

Enter fullscreen mode Exit fullscreen mode

6- You can create a circular icon button using ElevatedButton. Check the following example.


    ElevatedButton(
    style: ElevatedButton.styleFrom(
        shape: CircleBorder(), padding: EdgeInsets.all(30)),
    child: Icon(
      Icons.add,
      size: 50,
    ),
    onPressed: () {},
    )


Enter fullscreen mode Exit fullscreen mode

See you next week. 👋🏻

Follow me on Twitter for more tips about #coding, #learning, #technology...etc.

Check my Apps on Google Play & Apple Store

Cover image Ethan Robertson on Unsplash

Discussion (0)