Wie stelle ich ein Hintergrundbild in Flutter ein?

Lesezeit: 5 Minuten

Benutzeravatar von Arun Kumar
Arun Kumar

Ich versuche, ein Hintergrundbild für die Startseite festzulegen. Ich bekomme den Bildplatz vom Start des Bildschirms und fülle die Breite, aber nicht die Höhe. Übersehe ich etwas in meinem Code? Gibt es Bildstandards für Flattern? Werden Bilder basierend auf der Bildschirmauflösung jedes Telefons skaliert?

class BaseLayout extends StatelessWidget{
  @override
  Widget build(BuildContext context){
    return  Scaffold(
      body:  Container(
        child:  Column(
          mainAxisAlignment: MainAxisAlignment.start,
          children: [
             Image.asset("assets/images/bulb.jpg") 
          ]
        )
      )
    );
  }
}

  • welche Größe soll das Bild haben? Breite Höhe?

    – ArgaPK

    25. September 2018 um 13:28 Uhr

  • Kann jemand ein Beispiel mit Netzwerkbildaufruf geben

    – Der Milliardär

    12. Februar 2019 um 21:22 Uhr

  • @TheDeadGuy Image.network(‘example.com/path/to/image.jpg’)?

    – SacWebDeveloper

    23. April 2019 um 21:26 Uhr

  • Checkout-Lösung hier unter diesem Link stackoverflow.com/a/62245570/9955978

    – Shubham Sharma

    19. Juni 2020 um 9:31 Uhr

  • 8 Beispiele für Flutter-Hintergrundbilder

    – Vijay Ram

    5. Februar 2021 um 9:54 Uhr

Benutzeravatar von Collin Jackson
Collin Jackson

Ich bin mir nicht sicher, ob ich Ihre Frage verstehe, aber wenn Sie möchten, dass das Bild den gesamten Bildschirm ausfüllt, können Sie a verwenden DecorationImage mit einem Anfall von BoxFit.cover.

class BaseLayout extends StatelessWidget{
  @override
  Widget build(BuildContext context){
    return Scaffold(
      body: Container(
        decoration: BoxDecoration(
          image: DecorationImage(
            image: AssetImage("assets/images/bulb.jpg"),
            fit: BoxFit.cover,
          ),
        ),
        child: null /* add child content here */,
      ),
    );
  }
}

Für Ihre zweite Frage, hier ist ein Link zum Dokumentation zum Einbetten von auflösungsabhängigen Asset-Bildern in Ihre App.

  • Das funktioniert, solange Sie kein Kind haben. Wenn Sie ein untergeordnetes Element hinzufügen, wird die Größe des Containers auf die Größe seines untergeordneten Elements geschrumpft. Wissen Sie, wie Sie den Container dazu bringen können, den gesamten Bildschirm auszufüllen, unabhängig von der Größe seines untergeordneten Elements?

    – HyLian

    9. März 2018 um 14:35 Uhr

  • @ColinJackson wie groß sollte das Bild sein? Breite Höhe?

    – ArgaPK

    25. September 2018 um 13:28 Uhr

  • @HyLian setzt die Constraints-Eigenschaft des Containers, constraints: BoxConstraints.expand()

    – Rustem Kakimow

    18. Januar 2020 um 2:14 Uhr


  • @HyLian hinzufügen width: double.infinity zum Container mit dem Bild.

    – jkoech

    7. April 2020 um 19:32 Uhr

  • Wie wiederholt man das Bild vom Mustertyp im Containerhintergrund im Flattern?

    – Kamlesh

    11. Oktober 2020 um 13:05 Uhr

Wenn Sie eine verwenden Container als Körper der Scaffoldwird seine Größe entsprechend der Größe seines untergeordneten Elements sein, und normalerweise ist dies nicht das, was Sie möchten, wenn Sie versuchen, Ihrer App ein Hintergrundbild hinzuzufügen.

Mit Blick auf diese andere Frage schlug @collin-jackson auch vor, sie zu verwenden Stack anstatt Container als Körper der Scaffold und es tut definitiv, was Sie erreichen wollen.

So sieht mein Code aus

@override
Widget build(BuildContext context) {
  return new Scaffold(
    body: new Stack(
      children: <Widget>[
        new Container(
          decoration: new BoxDecoration(
            image: new DecorationImage(image: new AssetImage("images/background.jpg"), fit: BoxFit.cover,),
          ),
        ),
        new Center(
          child: new Text("Hello background"),
        )
      ],
    )
  );
}

  • welche Größe soll das Bild haben? Breite Höhe?

    – ArgaPK

    25. September 2018 um 13:28 Uhr

  • Das Öffnen der Tastatur ändert die Größe des Bildes. Was kann man dafür tun?

    – Michael Hathi

    18. September 2019 um 5:09 Uhr

  • @MichaelHathi stackoverflow.com/questions/52572850/…

    – dilschan

    26. Februar 2021 um 7:55 Uhr

Benutzeravatar von CopsOnRoad
CopsOnRoad

Bildschirmfoto:

Geben Sie hier die Bildbeschreibung ein


Code:

@override
Widget build(BuildContext context) {
  return DecoratedBox(
    decoration: BoxDecoration(
      image: DecorationImage(image: AssetImage("your_asset"), fit: BoxFit.cover),
    ),
    child: Center(child: FlutterLogo(size: 300)),
  );
}

  • Bitte fügen Sie ein Textfeld ein und öffnen Sie die Tastatur, dann wird das Bild nach oben verschoben, was keine gute Lösung ist. Jeder andere Vorschlag, bitte teilen.

    – Kamlesh

    28. Februar 2021 um 17:26 Uhr

Sie können verwenden Stack um das Bild auf den ganzen Bildschirm auszudehnen.

Stack(
        children: <Widget>
        [
          Positioned.fill(  //
            child: Image(
              image: AssetImage('assets/placeholder.png'),
              fit : BoxFit.fill,
           ),
          ), 
          ...... // other children widgets of Stack
          ..........
          .............
         ]
 );

Hinweis: Optional bei Verwendung von a ScaffoldSie können die setzen Stack innerhalb der Scaffold mit oder ohne AppBar nach Ihren Bedürfnissen.

Ich konnte einen Hintergrund darunter anwenden Scaffold (und das sogar AppBar) durch Setzen der Scaffold unter einem Stack und Einstellung a Container in die erste “ebene” mit dem hintergrundbild setzen und fit: BoxFit.cover Eigentum.

Beide Scaffold Und AppBar muss die haben backgroundColor festlegen als Color.transparent und das elevation von AppBar muss 0 (Null) sein.

Voilà! Jetzt haben Sie einen schönen Hintergrund unter dem gesamten Scaffold und der AppBar! 🙂

import 'package:flutter/material.dart';
import 'package:mynamespace/ui/shared/colors.dart';
import 'package:mynamespace/ui/shared/textstyle.dart';
import 'package:mynamespace/ui/shared/ui_helpers.dart';
import 'package:mynamespace/ui/widgets/custom_text_form_field_widget.dart';

class SignUpView extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Stack( // <-- STACK AS THE SCAFFOLD PARENT
      children: [
        Container(
          decoration: BoxDecoration(
            image: DecorationImage(
              image: AssetImage("assets/images/bg.png"), // <-- BACKGROUND IMAGE
              fit: BoxFit.cover,
            ),
          ),
        ),
        Scaffold(
          backgroundColor: Colors.transparent, // <-- SCAFFOLD WITH TRANSPARENT BG
          appBar: AppBar(
            title: Text('NEW USER'),
            backgroundColor: Colors.transparent, // <-- APPBAR WITH TRANSPARENT BG
            elevation: 0, // <-- ELEVATION ZEROED
          ),
          body: Padding(
            padding: EdgeInsets.all(spaceXS),
            child: Column(
              children: [
                CustomTextFormFieldWidget(labelText: 'Email', hintText: 'Type your Email'),
                UIHelper.verticalSpaceSM,
                SizedBox(
                  width: double.maxFinite,
                  child: RaisedButton(
                    color: regularCyan,
                    child: Text('Finish Registration', style: TextStyle(color: white)),
                    onPressed: () => {},
                  ),
                ),
              ],
            ),
          ),
        ),
      ],
    );
  }
}

Benutzeravatar von Jitesh Mohite
Jitesh Mohite

Wir können Container verwenden und seine Höhe als unendlich markieren

body: Container(
      height: double.infinity,
      width: double.infinity,
      child: FittedBox(
        fit: BoxFit.cover,
        child: Image.network(
          'https://cdn.pixabay.com/photo/2016/10/02/22/17/red-t-shirt-1710578_1280.jpg',
        ),
      ),
    ));

Ausgang:

Geben Sie hier die Bildbeschreibung ein

Bokens Benutzeravatar
Boken

body: Container(
    decoration: BoxDecoration(
      image: DecorationImage(
        image: AssetImage('images/background.png'),fit:BoxFit.cover
      )
    ),
);

  • Die bereitgestellte Antwort wurde zur Überprüfung als Beitrag von geringer Qualität gekennzeichnet. Hier sind einige Richtlinien für Wie schreibe ich eine gute Antwort?. Diese bereitgestellte Antwort könnte von einer Erklärung profitieren. Nur-Code-Antworten werden nicht als “gute” Antworten angesehen.

    – Trenton McKinney

    8. August 2020 um 6:14 Uhr

1449480cookie-checkWie stelle ich ein Hintergrundbild in Flutter ein?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy