2017-08-14 8 views
0

Ich versuche, ein Rechteck an der Unterseite zu zeichnen, nur das Rect Objekt Rect.fromLTRB ist nicht Zeichnung.Flattern - Zeichnen eines Rechtecks ​​im Boden

Ich weiß nicht, ob ich das Rect Objekt falsch interpretiere oder ich schreibe das drawRect Objekt irrtümlich.

Können Sie mir helfen, ein Rechteck in den Boden zu zeichnen?

import 'package:flutter/material.dart'; 

void main() { 
    runApp(new MaterialApp(home: new HomePage())); 
} 

class HomePage extends StatefulWidget { 
    @override 
    HomePageState createState() => new HomePageState(); 
} 

class HomePageState extends State<HomePage> { 
    @override 
    Widget build(BuildContext context) { 
    return new Scaffold(
     body: new Stack(
     children: <Widget>[ 
      new Positioned(
      bottom: 0.0, 
      left: 0.0, 
      right: 0.0, 
      top: 0.0, 
      child: new CustomPaint(
       painter: new Sky(), 
      ) 
     ), 
     ] 
    ) 
    ); 
    } 
} 

class Sky extends CustomPainter { 
    @override 
    void paint(Canvas canvas, Size size) { 
    canvas.drawRect(
     new Rect.fromLTRB(
     0.0, 100.0, 0.0, 0.0 
    ), 
     new Paint()..color = new Color(0xFF0099FF), 
    ); 
    } 

    @override 
    bool shouldRepaint(Sky oldDelegate) { 
    return false; 
    } 
} 

Antwort

2

Ihre linke und rechte ist die gleiche (0.0), so dass es eine leere Rect zeichnet. Auch die Koordinaten beginnen oben, also sollte unten> oben sein; Versuchen Sie, diesen

neuen Rect.fromLTRB ( 0,0, 0,0, 20,0, 100,0 )

+0

Danke für die Hilfe, erschien das gemalte Rechteck – rafaelcb21

0

folgt den Code, in dem das Rechteck im unteren Teil des Bildschirms ist:

import 'package:flutter/material.dart'; 
import 'dart:ui' as ui; 

void main() { 
    runApp(new MaterialApp(home: new HomePage())); 
} 

class HomePage extends StatefulWidget { 
    @override 
    HomePageState createState() => new HomePageState(); 
} 

class HomePageState extends State<HomePage> { 

    @override 
    Widget build(BuildContext context) { 
    final ui.Size logicalSize = MediaQuery.of(context).size; 
    final double _width = logicalSize.width; 
    final double _height = logicalSize.height; 
    double _rectHeight = 50.0; 
    return new Scaffold(
     body: new Stack(
     children: <Widget>[ 
      new Positioned(
      bottom: 0.0, 
      left: 0.0, 
      top: _height - _rectHeight, 
      right: 0.0, 
      child: new CustomPaint(
       painter: new Sky(_width, _rectHeight), 
       child: new Text('$_width'), 
      ) 
     ), 
     ] 
    ) 
    ); 
    } 
} 

class Sky extends CustomPainter { 
    final double _width; 
    final double _rectHeight; 
    Sky(this._width, this._rectHeight); 

    @override 
    void paint(Canvas canvas, Size size) { 
    canvas.drawRect(
     new Rect.fromLTRB(
     0.0, 0.0, this._width, _rectHeight 
    ), 
     new Paint()..color = new Color(0xFF0099FF), 
    ); 
    } 

    @override 
    bool shouldRepaint(Sky oldDelegate) { 
    return false; 
    } 
} 
Verwandte Themen