Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Flutter: How to position a logo image based on coordinates?

Tags:

flutter

dart

I don't want to center the image and text, but I want to set a specific coordinate for it. I can't seem to get the alignment command to work.

Currently my logo image and text is posited as following:

enter image description here

I want the logo image and text to be towards the center but a little bit upwards on the y axis, not entirely centered vertically.

This is my main.dart code:

import 'package:flutter/material.dart';
import 'login_page.dart';

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new LoginPage(),
      theme: new ThemeData(
        primarySwatch: Colors.green
      )
    );
  }
}

This is my login_page.dart code:

import 'package:flutter/material.dart';

class LoginPage extends StatefulWidget{
  @override  
  State createState() => new LoginPageState();
}

class LoginPageState extends State<LoginPage>{
  @override 
  Widget build(BuildContext context){
    return new Scaffold(
      appBar: AppBar(
        title: new Text("SMART ID", textAlign: TextAlign.center, style: TextStyle(fontFamily: 'Open Sans', fontWeight: FontWeight.bold)),
        leading: Padding(
          padding: const EdgeInsets.all(8.0),
          child: Image.asset(
            "assets/arrowPNG.png",
            scale: 8.0,
          )
        )
      ),
      backgroundColor: Colors.transparent,
      body: Container(
        child: Column(
          children: <Widget>[
            Image.asset('assets/arrowPNG.png', scale: 2.5),
            SizedBox(height: 20,),
            Text("SMARTID", style: TextStyle(
              fontSize: 30, color: Colors.black, fontFamily: 'Open Sans', fontWeight: FontWeight.bold,
            ))
          ],
        ),
        width: MediaQuery.of(context).size.width,
        height: MediaQuery.of(context).size.height,
        decoration: BoxDecoration(
          image: DecorationImage(
            image: AssetImage('assets/background.png'),
            fit: BoxFit.cover,
          )
        )
      )
    );
  }
}

Thanks in advance!

like image 274
Nadia M Avatar asked Jan 26 '23 14:01

Nadia M


1 Answers

You can move background image and logo inside a Stack and then use Positioned for placing logo from the vertical position.

class LoginState extends State<Login> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
            title: Text("SMARTID", textAlign: TextAlign.center,
                style: TextStyle(
                    fontFamily: 'Open Sans', fontWeight: FontWeight.bold)),
            leading: Padding(
                padding: const EdgeInsets.all(8.0),
                child: Image.asset(
                  "assets/images/appicon.png",
                  scale: 8.0,
                )
            )
        ),
        backgroundColor: Colors.transparent,
        body: Stack(
          children: <Widget>[
            Container(
                alignment: Alignment(0, -0.5),
                width: MediaQuery
                    .of(context)
                    .size
                    .width,
                height: MediaQuery
                    .of(context)
                    .size
                    .height,
                decoration: BoxDecoration(
                    image: DecorationImage(
                      image: AssetImage('assets/images/background.jpg'),
                      fit: BoxFit.cover,
                    )
                )
            ),

            Positioned(
                width: MediaQuery.of(context).size.width,
                top: MediaQuery.of(context).size.width * 0.30,//TRY TO CHANGE THIS **0.30** value to achieve your goal 
                child: Container(
                  margin: EdgeInsets.all(16.0),
                  child:Column(
                      mainAxisAlignment: MainAxisAlignment.center,
                      children: <Widget>[
                        Image.asset('assets/images/appicon.png', scale: 2.5),
                        SizedBox(height: 20,),
                        Text("SMARTID", style: TextStyle(
                            fontSize: 30, color: Colors.white,fontFamily: 'Open Sans',
                            fontWeight: FontWeight.bold))
                      ]
                  ),
                ))
          ],
        )
    );
  }


}

Output

enter image description here

like image 179
Ravinder Kumar Avatar answered Feb 02 '23 20:02

Ravinder Kumar