• Flutter从入门到入土(四)各种组件


    1、CustomScrollView(滚动组件)

     1 Widget mainWidget(){
     2     return MaterialApp(
     3       home: Scaffold(
     4 //        appBar: topBar(),
     5 //        AppBar(
     6 //          title: Text(
     7 //            this.title,
     8 //            textAlign: TextAlign.center,
     9 //          ),
    10 //          backgroundColor: Colors.greenAccent,
    11 //        ),
    12         body: CustomScrollView(
    13 
    14           slivers: <Widget>[
    15 //            this.topBar(),
    16             this.topAppBar(),
    17             //            this.renderTitle('成绩单'),
    18             SliverList(
    19               delegate: SliverChildBuilderDelegate(
    20                       (context, index){
    21                     Container post;
    22                     if(index == 0){
    23                       post = itemTitleBar(user);
    24                     }else if (index == 1){
    25                       post = itemTitle();
    26                     }else if(index == int.parse(user._size)+2){
    27                       post = bottompage();
    28                     }else{
    29                       post = itemTable(index-2);
    30                     }
    31                     return post;
    32                   }
    33               ),
    34 //              itemExtent: 20,
    35             )
    36           ],
    37         ),
    38       ),
    39     );
    40   }
      Widget topAppBar() {
        return SliverAppBar(
          //图标设置
          leading: new IconButton(
              icon: Image.asset('assets/image/back.png'),
              onPressed: (){
                print('返回');
              }
          ),
          //Bar的颜色
          backgroundColor: Color.fromARGB(255, 150, 0, 0),
          pinned: true,
          elevation: 0,
          //整个Bar的高度
          expandedHeight: 200,
          flexibleSpace: FlexibleSpaceBar(
            title: new Text(
              '成绩查询',
              style: TextStyle(
                color: Colors.white,
                fontSize: 20.0,
              ),
            ),
            centerTitle: true,
            //向上滑的时候如何效果
            collapseMode: CollapseMode.pin,
            //Bar的图片,如果有透明度的话和Bar组合
            background: Image.network(
              url,
              fit: BoxFit.contain,
            ),
          ),
        );
      }

    详细参照:https://segmentfault.com/a/1190000019902201

    2、Table(表格组件)

     1   Widget itemTable(int index){
     2     if(index < user._scores.length){
     3       return Container(
     4         padding: EdgeInsets.fromLTRB(10, 5, 5, 0),
     5         child: new Table(
     6           //设置一行中每个框宽度
     7           columnWidths: {
     8             0: FixedColumnWidth(200.0),
     9             1: FixedColumnWidth(75.0),
    10             2: FixedColumnWidth(75.0),
    11           },
    12 //          border: TableBorder.all(color: Colors.red,  1.0, style: BorderStyle.solid),
    13           //对齐方式
    14           defaultVerticalAlignment: TableCellVerticalAlignment.middle,
    15           //循环渲染组件
    16           children: _tableRowList(index),
    17         ),
    18       );
    19     }
    20 
    21   }
     1   _tableRowList(int i){
     2     dynamic content;
     3     List<TableRow> Tlist = new List<TableRow>();
     4 
     5     content = TableRow(
     6       decoration: BoxDecoration(
     7         color: Colors.white,
     8       ),
     9       children: [
    10         Text(user._scores[i]._className,style: TextStyle(color: Colors.black,fontSize: 17,),),
    11         Center(
    12           child: Text(user._scores[i]._credit,style: TextStyle(color: Colors.black,fontSize: 20,),),
    13         ),
    14         Center(
    15           child: Text(user._scores[i]._score,style: TextStyle(color: Colors.black,fontSize: 20),),
    16         )
    17       ],
    18     );
    19     Tlist.add(content);
    20 
    21     return Tlist;
    22   }

    参照:

      Table组件:https://blog.csdn.net/kangshaojun888/article/details/86699064

      循环遍历:https://baijiahao.baidu.com/s?id=1641814439649294416&wfr=spider&for=pc

    3、Dialog(弹窗组件)

    定义弹出的东西:

    @override
    Widget build(BuildContext context){
      if (booksList[0].status=='null'){
        return Center(
          child: Container(
            height: 200,
             300,
            color: Colors.white,
            child: Center(
              child: Text(
                '暂无在架,请一段时间后再查询',
                style: TextStyle(
                  color: Colors.black,
                  decoration: TextDecoration.none,
                  fontSize: 19,
                  fontWeight: FontWeight.bold,
                ),
              ),
            ),
          ),
    
        );
      }else{
        return Center(
          child: ListView.builder(
              itemCount: booksList.length,
              itemBuilder: (context, index){
                return _books(index);
              }
          ),
        );
      }
    }

    弹出:使用showDialog

    if(bookInfo != null){
      setState(() {
        print('setState!');
        showDialog(
            context: this.context,
            builder: (BuildContext context){
              print('bookname: $bookName');
              return BookInfoDialog(
                bookName,
                bookInfo._bookInfoPayload._bookHold,
              );
            }
        );
      });
    }
    

    参考:https://www.jianshu.com/p/4bbbb5aa855d

    4、按钮组件

      RaisedButton:

     1 child:RaisedButton(
     2   child: Text(
     3     '登录',
     4     style: TextStyle(
     5       fontSize: 30,
     6     ),
     7   ),
     8   color: Colors.white,
     9 
    10   shape: RoundedRectangleBorder(
    11     borderRadius: BorderRadius.all(Radius.circular(25)),
    12   ),
    13   elevation: 10,
    14   onPressed: () {
    15 
    16     print('1');
    17   },
    18 
    19 )

    每天进步一点点
  • 相关阅读:
    UVA
    计算几何 点和线
    CTU Open Contest 2017
    2018 Multi-University Training Contest 2
    2018 Multi-University Training Contest 1
    Nordic Collegiate Programming Contest (NCPC) 2016
    The 2016 ACM-ICPC Asia Shenyang Regional Contest
    The 2016 ACM-ICPC Asia Qingdao Regional Contest
    CCPC 2016-2017, Finals
    North American Invitational Programming Contest (NAIPC) 2016
  • 原文地址:https://www.cnblogs.com/smallstars/p/12927434.html
Copyright © 2020-2023  润新知