(四)Flutter 快速起步 HelloWord 与ListView

 

 

Flutter 的核心就是组件 也就是Widget 所以记住核心才能开发好app呀

案列 1  在屏幕中间显示hello

import 'package:flutter/material.dart';



void main(){
runApp(
  Center(
    child: Text(
     'Hello1111',
     textDirection: TextDirection.ltr,
      ),
  
  )
);
}

案列2 自定义小部件Widget

import 'package:flutter/material.dart';


void main()=>runApp(App());



class App extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Center(
    child: Text(
     'Hello1111',
     textDirection: TextDirection.ltr,
      ),
  
  );
  }
  
}

效果同上。不在贴图

案列3 文字的样式TextStyle

import 'package:flutter/material.dart';



void main(){
  runApp(App());
}


class App extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Center(
      child: Text(
        'Hello1111',
        textDirection: TextDirection.ltr,
        style: TextStyle(
            fontSize: 40.0,
            fontWeight: FontWeight.bold,
            color: Colors.yellow
        ),
      ),

    );
  }

}

案列4  MaterialApp:使用界面组件与定制界面主题

import 'package:flutter/material.dart';



void main()=>runApp(App());



class App extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('app Bar'),
 
          elevation: 0.0,
        ),
        body: Hello(),
      ),
      theme: ThemeData(
          primarySwatch: Colors.yellow
      ),
    );
  }

}



class Hello extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Center(
      child: Text(
        'Hello1111',
        textDirection: TextDirection.ltr,
        style: TextStyle(
            fontSize: 40.0,
            fontWeight: FontWeight.bold,
            color: Colors.black87
        ),
      ),

    );;
  }

}

案列5 列表 准备数据

下面写一个ListView

我们把数据提前准备好

lib下新建 model/post.dart

内容如下

class Post{
  const Post({
    this.title,
    this.author,
    this.imgeUrl,
  });
  final String title;
  final String author;
  final String imgeUrl;
}

final List<Post> posts=[
  Post(
    title:'七叶森',
    author:'Liu An',
    imgeUrl:'https://www.qiyesen.com/wp-content/uploads/2020/01/20200107042314837_easyicon_net_96.ico',
  ),
  Post(
    title:'七叶森',
    author:'Liu An',
    imgeUrl:'https://www.qiyesen.com/wp-content/uploads/2020/01/20200107042314837_easyicon_net_96.ico',
  ),
  Post(
    title:'七叶森',
    author:'Liu An',
    imgeUrl:'https://www.qiyesen.com/wp-content/uploads/2020/01/20200107042314837_easyicon_net_96.ico',
  ),
  Post(
    title:'七叶森',
    author:'Liu An',
    imgeUrl:'https://www.qiyesen.com/wp-content/uploads/2020/01/20200107042314837_easyicon_net_96.ico',
  ),
  Post(
    title:'七叶森',
    author:'Liu An',
    imgeUrl:'https://www.qiyesen.com/wp-content/uploads/2020/01/20200107042314837_easyicon_net_96.ico',
  ),
  Post(
    title:'七叶森',
    author:'Liu An',
    imgeUrl:'https://www.qiyesen.com/wp-content/uploads/2020/01/20200107042314837_easyicon_net_96.ico',
  )

];

main.dart新建一个widget 把home 提取出来

然后写一个简单的listView

列表视图:ListView.builder

import 'package:flutter/material.dart';
import 'model/post.dart';


void main()=>runApp(App());



class App extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return MaterialApp(
      home: Home(),
      theme: ThemeData(
        primarySwatch: Colors.yellow
      ),
    );
  }
  
}



class Hello extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Center(
    child: Text(
     'Hello1111',
     textDirection: TextDirection.ltr,
     style: TextStyle(
       fontSize: 40.0,
       fontWeight: FontWeight.bold,
       color: Colors.black87
     ),
      ),
  
  );
  }

}

class Home extends StatelessWidget{
  Widget _listItemBuilder(BuildContext context,int index){
    return Text(posts[index].title);
  }
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
        appBar: AppBar(
          title: Text('app Bar'),
          // 阴影
          elevation: 0.0,
        ),
        body: ListView.builder(
          itemCount:posts.length,
          itemBuilder: _listItemBuilder,
        ),
      );
  }

}

 

案列 列表项目 继续优化细节

import 'package:flutter/material.dart';
import 'model/post.dart';


void main()=>runApp(App());



class App extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return MaterialApp(
      home: Home(),
      theme: ThemeData(
        primarySwatch: Colors.yellow
      ),
    );
  }
  
}



class Hello extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Center(
    child: Text(
     'Hello1111',
     textDirection: TextDirection.ltr,
     style: TextStyle(
       fontSize: 40.0,
       fontWeight: FontWeight.bold,
       color: Colors.black87
     ),
      ),
  
  );
  }

}

class Home extends StatelessWidget{
  Widget _listItemBuilder(BuildContext context,int index){
    return Container(
      color: Colors.white,
      margin: EdgeInsets.all(8.0),
      child: Column(
        children: <Widget>[
          Image.network(posts[index].imgeUrl),
          SizedBox(height: 16.0), 
          Text(
            posts[index].title,
            style: Theme.of(context).textTheme.title,
          ),
          Text(
            posts[index].author,
            style: Theme.of(context).textTheme.subhead,
          ),
           SizedBox(height: 16.0), 
        ],
      ),
    );
  }
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      backgroundColor: Colors.grey[100],
        appBar: AppBar(
          title: Text('app Bar'),
          // 阴影
          elevation: 0.0,
        ),
        body: ListView.builder(
          itemCount:posts.length,
          itemBuilder: _listItemBuilder,
        ),
      );
  }

}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安果移不动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值