Flutter — 一些基础组件的运用

Flutter — 一些基础组件的运用


flutter 组件 移动端

1.Text

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title:'Title',
      home:Scaffold(
        body:Center(
          child:Text(
            '这是一段没有意义的文字这是一段没有意义的文字这是一段没有意义的文字',
            textAlign: TextAlign.center,
            maxLines: 1,
            overflow: TextOverflow.ellipsis,
            style:TextStyle(
              fontSize: 25,
              color:Color.fromARGB(255, 255, 125, 125),
              decoration: TextDecoration.underline,
              decorationStyle: TextDecorationStyle.solid
            )
          )
        )
      )
    );
  }
}

2.Container

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title:'Title',
      home:Scaffold(
        body:Center(
          child:Container(
            child: Text('Hello Niko',style: TextStyle(fontSize: 40)),
            alignment: Alignment.topLeft,
            width: 300,
            height:400,
//            color:Colors.lightBlue,
            padding: EdgeInsets.fromLTRB(10, 20, 0, 0),
            margin: EdgeInsets.all(20),
            decoration: BoxDecoration(
              gradient: LinearGradient(
                colors: [Colors.lightBlue,Colors.greenAccent,Colors.pink]
              ),
                border: Border.all(width: 5,color: Colors.pink)
            ),
          )
        )
        )
      );

  }
}

3.Image

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title:'Title',
      home:Scaffold(
        body:Center(
          child:Container(
            //assets memory file
            child: Image.network(
              'https://i0.hdslb.com/bfs/archive/e26a524226180c3a7af85a17020c38e9aad521f2.jpg@1100w_484h_1c_100q.jpg',
//               fit:BoxFit.contain,//按比例 图片不变形
//               fit:BoxFit.fitWidth,//横向撑满 图片不变形 纵向裁剪
//               fit:BoxFit.fitHeight,//纵向撑满 图片不变形 横向裁剪
//               fit: BoxFit.fill,//撑满 变形
//               fit: BoxFit.cover,//图片不变形 纵横撑满
                color:Colors.pink,
                colorBlendMode: BlendMode.modulate,//类似加滤镜
                repeat: ImageRepeat.repeat,//repeatX repeatY
            ),
            width: 200,
            height:200,
            color:Colors.lightBlue
        )
        )
      )
    );
  }
}

4.ListView

 纵向列表
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title:'Title',
      home:Scaffold(
        appBar: AppBar(title:Text('Hello')),
        body:ListView(
          children: <Widget>[
            new ListTile(
              leading: Icon(Icons.perm_camera_mic),
              title:Text('perm_camera_mic')
            ),
            Image.network('https://img.mukewang.com/user/57dfc46400017b4f07400740-100-100.jpg',width: 100,height:100),
            Image.network('https://img.mukewang.com/user/57dfc46400017b4f07400740-100-100.jpg',width: 100,height:100),
            Image.network('https://img.mukewang.com/user/57dfc46400017b4f07400740-100-100.jpg',width: 100,height:100),
            Image.network('https://img.mukewang.com/user/57dfc46400017b4f07400740-100-100.jpg',width: 100,height:100),
          ],
        )
      )
    );
  }
}
// 横向列表
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title:'Title',
      home:Scaffold(
        appBar: AppBar(title:Text('Hello')),
        body:Center(
          child: Container(
            height:200,
            child:ListView(
              scrollDirection: Axis.horizontal,
              children: <Widget>[
                Container(
                  width: 180,
                  color:Colors.pink
                ),
                Container(
                    width: 180,
                    color:Colors.lightBlue
                ),
                Container(
                    width: 180,
                    color:Colors.brown
                ),
                Container(
                    width: 180,
                    color:Colors.blueGrey
                ),
              ],
            )
          ),
        )
      )
    );
  }
}

// 减少嵌套的话 拆分下
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title:'Title',
      home:Scaffold(
        appBar: AppBar(title:Text('Hello')),
        body:Center(
          child: Container(
            height:200,
            child:List1()
          ),
        )
      )
    );
  }
}

class List1 extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    return ListView(
      scrollDirection: Axis.horizontal,
      children: <Widget>[
        Container(
            width: 180,
            color:Colors.pink
        ),
        Container(
            width: 180,
            color:Colors.lightBlue
        ),
        Container(
            width: 180,
            color:Colors.brown
        ),
        Container(
            width: 180,
            color:Colors.blueGrey
        ),
      ],
    );
  }

}

// 动态列表

import 'package:flutter/material.dart';

void main() => runApp(MyApp(
  List.generate(1000, (i) => "Item $i")
));

class MyApp extends StatelessWidget {

  final List items;
  MyApp(this.items);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title:'Title',
      home:Scaffold(
        appBar: AppBar(title:Text('Hello')),
        body:ListView.builder(
          itemCount: items.length,
          itemBuilder: (context,index){
            return ListTile(title: Text(items[index]));
          },
        )
      )
    );
  }
}

© 2025 Niko Xie