flutterdartmobile-applicationdart-null-safety

Couldn't resolve the gap between?


I have created a LinkText class of my own which has a Row of Text which has a normal text and link text for getting to another page. I already had a page of Sign up of column method, while I inserted this row class in that page, there is a huge gap in between I want to get rid of it but don't know how?

I paste the page and that component class here:

import 'package:flutter/material.dart';
import 'package:nazkearn_app/components/fieldform.dart';
import 'package:nazkearn_app/components/link_with_text.dart';
import 'package:nazkearn_app/components/tap_button.dart';

class SignInScreen extends StatelessWidget {
  SignInScreen({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
          children: [
            const SizedBox(
              height: 150,
            ),
            const Padding(
                padding: EdgeInsets.only(left: 20.0)),
            const Center(
              child: Text("Sign In",
                style: TextStyle(
                  fontSize: 30,
                  fontWeight: FontWeight.bold,
                ),),
            ),
            Text("Login and continue your journey",
              style: TextStyle(
                  fontSize: 20,
                  fontWeight: FontWeight.normal,
                  color: Colors.grey[700]
              ),),
            const SizedBox(
              height: 20,
            ),
            const Fieldform(
                name: "Email",
                foretext: "Type your email"),
            const Fieldform(
                name: "Password",
                foretext: "Type your Password"),
            const SizedBox(
              height: 30,
            ),
            const TapButton(
                text: "Sign in"),
            // here there is an huge gap 
            const LinkText(
                  normal:"Don't have an Account",
                  link: "Sign in"),
          ]
      ),
    );
  }
}

//that class
import 'package:flutter/material.dart';

class LinkText extends StatelessWidget {
  const LinkText({Key? key,
    required this.normal,
    required this.link})
      : super(key: key);
  final String normal;
  final String link;

  @override
  Widget build(BuildContext context) {
    return Row(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        Text("Don't have an Account?",
          style: TextStyle(fontSize: 16),
        ),
        GestureDetector(
          onTap: () {
          },
          child: Text("Sign up",
            style: TextStyle(fontSize: 16,
            color: Colors.red[400]),
          ),
        ),
      ],
    );
  }
}

I tried Padding and Spacer and many other things but it doesn't move near to the sign in button. I want the text to go right below the sign in button. Please help

enter image description here


Solution

  • You have not pasted the code for TapButton. There must be an issue with that code.

    If I use Elevated button then there is no gap.

    Here is the code for it:

    import 'package:flutter/material.dart';
    // import 'package:nazkearn_app/components/fieldform.dart';
    // import 'package:nazkearn_app/components/link_with_text.dart';
    // import 'package:nazkearn_app/components/tap_button.dart';
    
      class HomePage extends StatelessWidget {
      HomePage({Key? key}) : super(key: key);
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Column(
              children: [
                const SizedBox(
                  height: 150,
                ),
                const Padding(
                    padding: EdgeInsets.only(left: 20.0)),
                const Center(
                  child: Text("Sign In",
                    style: TextStyle(
                      fontSize: 30,
                      fontWeight: FontWeight.bold,
                    ),),
                ),
                Text("Login and continue your journey",
                  style: TextStyle(
                      fontSize: 20,
                      fontWeight: FontWeight.normal,
                      color: Colors.grey[700]
                  ),),
                const SizedBox(
                  height: 20,
                ),
                 TextFormField(
                   decoration: InputDecoration(
                     hintText: 'Type your email',
                     label: Text('Email')
                   ),),
                 TextFormField(
                   decoration: InputDecoration(
    
                       hintText: 'Type your Password',
                       label: Text('Password')
                   ),
                 ),
                 SizedBox(
                  height: 30,
                ),
                 ElevatedButton(
                  onPressed: (){},
                    child: Text('Sign in'),
                 ),
                // here there is an huge gap
                const LinkText(
                    normal:"Don't have an Account",
                    link: "Sign in"),
              ]
          ),
        );
      }
    }
    
    class LinkText extends StatelessWidget {
      const LinkText({Key? key,
        required this.normal,
        required this.link})
          : super(key: key);
      final String normal;
      final String link;
    
      @override
      Widget build(BuildContext context) {
        return Row(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text("Don't have an Account?",
              style: TextStyle(fontSize: 16),
            ),
            GestureDetector(
              onTap: () {
              },
              child: Text("Sign up",
                style: TextStyle(fontSize: 16,
                    color: Colors.red[400]),
              ),
            ),
          ],
        );
      }
    }
    

    See here the output: [1][enter image description here