Stateless Widgets - Container

Stateless Widgets - Container#

Key Ideas#

NOTE:

Containers can not go past physical boundaries unless they are in a container that can.

Example Code#

import 'package:flutter/material.dart';

void main() {
  runApp(const MaterialApp(home: MyStateLessWidget()));
}

class MyStateLessWidget extends StatelessWidget {
  //constructor
  const MyStateLessWidget({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(title: const Text("Home Page")),
        backgroundColor: Colors.indigo,
        body: Container(
            padding: const EdgeInsets.all(5.0),
            child: Column(
              //CrossAxisAlignment start, end, center, stretch
                crossAxisAlignment: CrossAxisAlignment.stretch,
                children: <Widget>[
                  const Text("Happy Day"),
                  const Text("The Beatles",
                      style: TextStyle(color: Colors.lime, fontSize: 24.0)),
                  const Divider(color: Colors.red, thickness: 9.00),
                  MyRichText.allInfo("Bubba", "Smith", "Shepard", "Fido"),
                  MyRichText.allInfo("Suzy", "Jones", "Collie", "Lassie"),
                  const Divider(color: Colors.red, thickness: 9.00),
                  MyCard(
                      title: const Text("I Love Boats"),
                      icon: const Icon(
                        Icons.directions_boat_outlined,
                        size: 40.0,
                        color: Colors.red,
                      )),
                  MyCard(
                      title: const Text("I Love Airplanes"),
                      icon: const Icon(
                        Icons.airplanemode_active,
                        size: 40.0,
                        color: Colors.blue,
                      )),
                  Row(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      mainAxisAlignment: MainAxisAlignment.center,
                      children: [
                        MyCard(
                            title: const Text("I Love Boats"),
                            icon: const Icon(
                              Icons.directions_boat_outlined,
                              size: 40.0,
                              color: Colors.red,
                            )),
                        MyCard(
                            title: const Text("I Love Airplanes"),
                            icon: const Icon(
                              Icons.airplanemode_active,
                              size: 40.0,
                              color: Colors.blue,
                            )),
                      ]),
                ]) //end of column
        ) //end of container
    );
  }
}

class MyRichText extends StatelessWidget {
  String _ownerFN = "";
  String _ownerLN = "";
  String _dogBreed = "";
  String _dogName = "Barky";

  MyRichText.allInfo(
      this._ownerFN, this._ownerLN, this._dogBreed, this._dogName);

  @override
  Widget build(BuildContext context) {
    return Container(
        decoration: BoxDecoration(
          border: Border.all(color: Colors.yellow, width: 5.0),
          borderRadius: BorderRadius.circular(10.0),
          color: Colors.lightBlueAccent,
        ), //bd
        margin: const EdgeInsets.fromLTRB(50, 5, 0, 20),
        padding: const EdgeInsets.all(10.0),
        child: Column(
          //crossAxisAlignment start, center, end, stretch
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: <Widget>[
              RichText(
                  text: TextSpan(children: <TextSpan>[
                    const TextSpan(
                        text: 'Owner: ',
                        style: TextStyle(fontWeight: FontWeight.bold)),
                    TextSpan(text: _ownerFN + ' ' + _ownerLN)
                  ])), //end of Rich Text
              RichText(
                  text: TextSpan(children: <TextSpan>[
                    const TextSpan(
                        text: 'Dog Name: ',
                        style: TextStyle(fontWeight: FontWeight.bold)),
                    TextSpan(text: _dogName)
                  ])), //end of Rich Text
              RichText(
                  text: TextSpan(children: <TextSpan>[
                    const TextSpan(
                        text: 'Dog Breed: ',
                        style: TextStyle(fontWeight: FontWeight.bold)),
                    TextSpan(text: _dogBreed)
                  ])), //end of Rich Text
            ])); //end of container
  } //end of WidgetBuild
}

class MyCard extends StatelessWidget {
  final Widget title;
  final Widget icon;

  // constructor
  MyCard(
      {Key? key,
        this.title = const Text(""),
        this.icon = const Icon(Icons.ac_unit)})
      : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Container(
        padding: const EdgeInsets.all(10.0),
        child: Card(
            child: Container(
                padding: const EdgeInsets.all(10.0),
                child: Column(children: <Widget>[title, icon]))));
  }
}