2017-06-18 6 views
1

Ich habe das folgende Code-Schnipsel und ich möchte das Bild so verblasst, dass es andere Gegenstände im Container nicht stört. Gibt es einen Filter, der dies erreichen könnte?Make BoxDecoration Bild verblasst/transparent

child: new Card(
    child: new Container(
    decoration: new BoxDecoration(
     color: const Color(0xff7c94b6), 
     image: new DecorationImage(
      image: new ExactAssetImage('lib/images/pic1.jpg'), 
      ) 
      ) 
    ) 
    ) 

Antwort

2

Sie konnten geben Sie Ihre DecorationImage ein ColorFilter auf das Hintergrundbild grau zu machen (mit einem saturation Farbfilter) oder halbtransparent (mit einem dstATop Farbfilter).

screenshot

-Code für dieses Beispiel ist unten.

import 'package:flutter/material.dart'; 

void main() { 
    runApp(new MyApp()); 
} 

class MyApp extends StatelessWidget { 
    @override 
    Widget build(BuildContext context) { 
    return new MaterialApp(
     home: new HomePage(), 
    ); 
    } 
} 

class HomePage extends StatelessWidget { 
    @override 
    Widget build(BuildContext context) => new Scaffold(
    appBar: new AppBar(
     title: new Text('Grey Example'), 
    ), 
    body: new Column(
     crossAxisAlignment: CrossAxisAlignment.stretch, 
     children: [ 
     new Card(
      child: new Container(
      child: new Text(
       'Hello world', 
       style: Theme.of(context).textTheme.display4 
      ), 
      decoration: new BoxDecoration(
       color: const Color(0xff7c94b6), 
       image: new DecorationImage(
       fit: BoxFit.cover, 
       colorFilter: new ColorFilter.mode(Colors.black.withOpacity(0.2), BlendMode.dstATop), 
       image: new NetworkImage(
        'http://www.allwhitebackground.com/images/2/2582-190x190.jpg', 
       ), 
      ), 
      ), 
     ), 
     ), 
     ], 
    ), 
); 
} 

Das Widget Opacity ist eine weitere Option.

Sie können den Effekt auch auf das Asset anwenden.

+0

Das Opazitäts-Widget scheint den Inhalt des gesamten Containers zu beeinflussen, was nicht ganz das ist, was ich wollte. Ich habe den Effekt vorher angewendet. Wie würde ich ColorFilter verwenden, um es transparent zu machen? Wenn Sie die Farbe auf Grau setzen, scheint dies den Effekt zu überschreiben, den der Mischmodus haben könnte. Vielen Dank. – driftavalii

+0

Für die Deckkraft könnten Sie einen Stapel verwenden, um etwas über Ihr Bild zu legen. Ich habe meine Antwort aktualisiert, um ein Codebeispiel für den ColorFilter-Ansatz bereitzustellen. –