2017-09-01 2 views
0

Je voudrais afficher un grand FlutterLogo dans mon application: https://docs.flutter.io/flutter/material/FlutterLogo-class.htmlCan FlutterLogo peut-il être fait pour s'étirer pour remplir?

Pour tenir compte des différentes tailles d'écran, je voudrais faire étirer à remplir. Est-ce possible? Ou ai-je besoin d'utiliser une MediaQuery pour déterminer la taille du parent et le passer dans FlutterLogo (taille :)?

Mon code actuel:

Widget build(BuildContext context) { 
    return new Center(
     child: new FlutterLogo(size: 800.0, style: FlutterLogoStyle.horizontal, textColor: Colors.white), 
    ); 
    } 
+2

Ce message peut être utile https://stackoverflow.com/questions/45817007/how-to-automatically-size-icons-in-flutter-to-be-as-big-as-possible – aziza

Répondre

0

enter image description here

Je crois avoir répondu à une question similaire

How to stretch an icon to fill parent?

https://docs.flutter.io/flutter/widgets/Expanded-class.html

https://groups.google.com/forum/#!msg/flutter-dev/lsgdU1yl7xc/0pYS2qrzBQAJ

https://docs.flutter.io/flutter/widgets/FittedBox-class.html

https://docs.flutter.io/flutter/painting/BoxFit-class.html

new Expanded(
     child: new FittedBox(
     fit: BoxFit.fill, 
     child: new FlutterLogo(style: FlutterLogoStyle.horizontal, textColor: Colors.white), 
    ), 
), 

je me sens un peu étrange. En regardant l'identifiant du profil OP, je me demande si je réponds correctement à la question.

J'espère que cela aide.

utilisé ce code pour exécuter

import 'package:flutter/material.dart'; 

class MyAppBar extends StatelessWidget { 
    MyAppBar({this.title}); 

    // Fields in a Widget subclass are always marked "final". 

    final Widget title; 

    @override 
    Widget build(BuildContext context) { 
    return new Container(
     height: 56.0, // in logical pixels 
     padding: const EdgeInsets.symmetric(horizontal: 8.0), 
     decoration: new BoxDecoration(color: Colors.blue[500]), 
     // Row is a horizontal, linear layout. 
     child: new Row(
    // <Widget> is the type of items in the list. 
    children: <Widget>[ 
     new IconButton(
     icon: new Icon(Icons.menu), 
     tooltip: 'Navigation menu', 
     onPressed: null, // null disables the button 
    ), 
     // Expanded expands its child to fill the available space. 
     new Expanded(
     child: title, 
    ), 
     new IconButton(
     icon: new Icon(Icons.search), 
     tooltip: 'Search', 
     onPressed: null, 
    ), 
    ], 
    ), 
    ); 
    } 
} 

class MyScaffold extends StatelessWidget { 
    @override 
    Widget build(BuildContext context) { 
    // Material is a conceptual piece of paper on which the UI appears. 
    return new Material(
     // Column is a vertical, linear layout. 
     child: new Column(
    children: <Widget>[ 
     new MyAppBar(
     title: new Text(
      'Example title', 
      style: Theme.of(context).primaryTextTheme.title, 
     ), 
    ), 
     new Expanded(
     child: new FittedBox(
      fit: BoxFit.fill, 
      child: new FlutterLogo(style: FlutterLogoStyle.horizontal, textColor: Colors.white), 
     ), 
    ), 
    ], 
    ), 
    ); 
    } 
} 


void main() { 
    runApp(new MaterialApp(
    title: 'My app', // used by the OS task switcher 
    home: new MyScaffold(), 
)); 
} 

modifier: Je posté code complet juste pour Darky, depuis que j'oublié de mentionner que les besoins élargis à envelopper dans la ligne, colonne ou conteneur flexible pour développer

+0

Won ' t travail. Alors que le conteneur sera correctement dimensionné, l'icône ne le sera pas (et sera centrée). – Darky

+0

@Darky étrange j'ai testé le code ci-dessus et l'icône a rempli le parent. – user1462442

+0

@ user142442 ah, semble que FlutterLogo agissent différemment alors le widget icône habituel. Alors mon mal, oublie ça. – Darky

0

Vous pouvez accomplir cela avec un ConstrainedBox:

screenshot

import 'package:flutter/material.dart'; 

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

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

class MyHomePage extends StatelessWidget { 
    @override 
    Widget build(BuildContext context) { 
    return new Scaffold(
     appBar: new AppBar(title: new Text('Example App')), 
     body: new ConstrainedBox(
     constraints: new BoxConstraints.expand(), 
     child: new FlutterLogo(
      style: FlutterLogoStyle.horizontal, 
      textColor: Colors.white, 
     ), 
    ), 
    ); 
    } 
}