lucasmbraz
6/13/2018 - 2:01 AM

home_page_body - v1

import 'package:flutter/material.dart';
import 'package:flutter_planets_tutorial/model/planets.dart';
import 'package:flutter_planets_tutorial/ui/common/plannet_summary.dart';
import 'package:flutter_planets_tutorial/ui/home/home_page_contract.dart';
import 'package:flutter_planets_tutorial/ui/home/home_page_presenter.dart';

class HomePageBody extends StatefulWidget { //1
  @override
  _HomePageBodyState createState() {
    return new _HomePageBodyState();
  }
}

class _HomePageBodyState extends State<HomePageBody> implements HomePageView {

  HomePagePresenter _presenter; //2
  List<Planet> _planets; //3

  _HomePageBodyState() {
    _presenter = HomePagePresenter(this);
    _planets = const [];
  }

  @override
  void initState() {
    super.initState();
    _presenter.loadPlanets(); //4
  }

  @override
  showPlanets(List<Planet> planets) {
    setState(() {
      _planets = planets;
    });
  }

  @override
  Widget build(BuildContext context) {
    return new Expanded(
      child: new Container(
        color: new Color(0xFF736AB7),
        child: new CustomScrollView(
          scrollDirection: Axis.vertical,
          shrinkWrap: false,
          slivers: <Widget>[
            new SliverPadding(
              padding: const EdgeInsets.symmetric(vertical: 24.0),
              sliver: new SliverList(
                delegate: new SliverChildBuilderDelegate(
                    (context, index) => new PlanetSummary(_planets[index]), //5
                  childCount: _planets.length,
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }
}