Hi Guy’s Welcome to Proto Coder Point. In this flutter article let’s learn how to set background image in flutter.
Preventing moving background image in flutter
If you have a TextField that open a keyboard then the background image will auto resize and move a bit above keyboard which don’t look good, so to solve it we can wrap Scaffold widget with container & in then container widget by using decoration we can add background image (Refer: As done in below snippet code), & then In scaffold widget make sure to set background color to transparent(so that background image is visible).
Note: I have used NetworkImage, but in real time app, it better to make use of AssetImage if your background in flutter app is static.
Container( decoration: BoxDecoration( image: DecorationImage( image: NetworkImage( 'https://images.pixexid.com/green-silhouette-mobile-wallpaper-hd-scpc9x4o.jpeg' ), fit: BoxFit.cover ) ), child: Scaffold( backgroundColor: Colors.transparent, appBar: AppBar( title: Text('Add Background image flutter'), ), body: Container( alignment: Alignment.center, padding: EdgeInsets.all(30), child: Column( children: const [ TextField( decoration: InputDecoration( hintText: 'Enter Email', filled: true, fillColor: Colors.white ), ), SizedBox(height: 20,), TextField( decoration: InputDecoration( hintText: 'Enter Password', filled: true, fillColor: Colors.white ), ), SizedBox(height: 20,), ElevatedButton( onPressed: null, child: Text("Submit"), ) ], ), ), ), );
Complete Source Code
The Below Code (Complete Source Code) will set a background image in flutter & darken the background image and apply gradient effect on top of flutter background image.
import 'package:flutter/material.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: const MyHomePage(), ); } } class MyHomePage extends StatefulWidget { const MyHomePage({Key? key}) : super(key: key); @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { @override Widget build(BuildContext context) { return Container( decoration: BoxDecoration( image: DecorationImage( image: NetworkImage( 'https://images.pixexid.com/green-silhouette-mobile-wallpaper-hd-scpc9x4o.jpeg' ), fit: BoxFit.cover ) ), child: Container( decoration: BoxDecoration( gradient: LinearGradient( begin: Alignment.center, end: Alignment.bottomCenter, colors: [ Colors.black12, Colors.red.shade100 ] ) ), child: Scaffold( backgroundColor: Colors.transparent, appBar: AppBar( title: Text('Add Background image flutter'), ), body: Container( alignment: Alignment.center, padding: EdgeInsets.all(30), child: Column( children: const [ TextField( decoration: InputDecoration( hintText: 'Enter Email', filled: true, fillColor: Colors.white ), ), SizedBox(height: 20,), TextField( decoration: InputDecoration( hintText: 'Enter Password', filled: true, fillColor: Colors.white ), ), SizedBox(height: 20,), ElevatedButton( onPressed: null, child: Text("Submit"), ) ], ), ), ), ), ); } }