// Flutter code sample for {{id}}

{{description}}

import 'package:flutter/widgets.dart';

{{code-imports}}

void main() => runApp(new MyApp());

/// This Widget is the main application widget.
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return WidgetsApp(
      title: 'Flutter Code Sample',
      builder: (BuildContext context, Widget navigator) {
        return MyStatelessWidget();
      },
      color: const Color(0xffffffff),
    );
  }
}

{{code-preamble}}

/// This is the stateless widget that the main application instantiates.
class MyStatelessWidget extends StatelessWidget {
  MyStatelessWidget({Key key}) : super(key: key);

  @override
  {{code}}
}
