import 'package:flutter/material.dart';
//english_words: 包含数千个最常用的英文单词以及一些实用功能.
//先在pubspec中配置版本,然后在此处引用
import 'package:english_words/english_words.dart';
//本示例创建一个Material APP
// => 单行函数的写法
void main() => runApp(new MyApp());
//statelessWidget,使应用本身也是一个widget
//statelessWiget不能改变,里面的所有属性都不能改变,所有的值都是最终的
//statefulWidget持有的状态可能在widget的生命周期中有变化
//使用StatefulWidget,需要继承StatefulWidget和State2个类
class MyApp extends StatelessWidget {
//widget作用是提供bulid方法来描述如何根据其他较低级别的widget来显示自己。
@override
Widget build(BuildContext context) {
final wordPair = new WordPair.random();
// return new MaterialApp(
// title: 'Welcome to Flutter',
// //Scaffold是Material Library提供的一个widget,它提供了默认的导航栏,标题和包含主屏幕的widget树的body属性
// home: new Scaffold(
// appBar: new AppBar(
// title: new Text('Welcome to Flutter2'),
// ),
// body: new Center(
child: new Text('Hello World2'),
// //打印随机单词,以驼峰形式显示
child: new Text(wordPair.asPascalCase),
// child: new RandomWords(),
// ),
// ),
// );
return new MaterialApp(
title: "start",
home: new RandomWords(),
);
}
}
class RandomWords extends StatefulWidget{
@override
createState() => new RandomWordsState();
}
class RandomWordsState extends State<RandomWords> {
final listViewData = <WordPair>[];
final textFont = const TextStyle(fontSize: 18.0);
@override
Widget build(BuildContext context) {
// final wordPair = new WordPair.random();
// return new Text(wordPair.asPascalCase);
return new Scaffold(
appBar: new AppBar(
title: new Text("show listview"),
),
body: showListView(),
);
}
Widget showListView(){
return new ListView.builder(
padding: const EdgeInsets.all(16.0),
itemBuilder: (context,i){
if(i.isEven) return new Divider();
final index = i ~/2;
if(index >= listViewData.length){
listViewData.addAll(generateWordPairs().take(10));
}
return listviewTitle(listViewData[index]);
}
);
}
Widget listviewTitle(WordPair pair){
return new ListTile(
title: new Text(pair.asPascalCase,
style: textFont,),
);
}
}
|