Flutter -- 3.快速开始Flutter

2021-11-03  本文已影响0人  MissStitch丶

1.Flutter项目类型介绍

2.Flutter的特点

3.万物皆Widget

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return const Center(
      child: Text(
        'helloFlutter',
        textDirection: TextDirection.ltr,
        style: TextStyle(
          fontSize: 40,//px
          color: Colors.purple,
          fontWeight: FontWeight.bold,
        ),
      ),
    );
  }
}
class MyStateFulWidget extends StatefulWidget {
  const MyStateFulWidget({Key? key}) : super(key: key);

  @override
  _MyStateFulWidgetState createState() => _MyStateFulWidgetState();
}

class _MyStateFulWidgetState extends State<MyStateFulWidget> {
  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

4. MaterialApp

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

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Hello Flutter')),
        body: Text('Hello Flutter'),
      ),
      debugShowCheckedModeBanner: false,
    );
  }
}

5. 初探ListView

void main() {
  runApp(MaterialApp(
    home: Scaffold(
      appBar: AppBar(title: Text('Hello Flutter')),
      body: ListViewTestWidget(),
    ),
    debugShowCheckedModeBanner: false,
  ));
}

class ListViewTestWidget extends StatelessWidget {
  Widget _itemBuilder(BuildContext context, int index) {
    return Container(
      margin: EdgeInsets.all(10),
      color: Colors.red,
      child: Column(
        children: [
          Image.network(datas[index].imageUrl!), //加载网络图片
          SizedBox(height: 10,), //间距10
          Text(
            datas[index].name!,
            style: TextStyle(
                fontSize: 25,
                fontStyle: FontStyle.italic,
                fontWeight: FontWeight.bold
            ),
          )
        ],
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return ListView.builder(
      itemBuilder: _itemBuilder,
      itemCount: datas.length,
    );
  }
}

class Car {
  final String? name;
  final String? imageUrl;

  const Car({this.name,this.imageUrl});
}

List<Car> datas = [
  const Car(
    name: '保时捷918 Spyder',
    imageUrl:
    'https://img.haomeiwen.com/i2990730/7d8be6ebc4c7c95b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240',
  ),
  const Car(
    name: '兰博基尼Aventador',
    imageUrl:
    'https://img.haomeiwen.com/i2990730/e3bfd824f30afaac?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240',
  )
];
ListView.png

6. 其它一些常用Widget介绍

1.Container

void main() {
  runApp(MaterialApp(
    home: Scaffold(
      appBar: AppBar(title: Text('Hello Flutter')),
      body: Container(
        child: Text('Hello Flutter'),
        // alignment: Alignment(0, 0), x,y值区间为-1~1。0,0在屏幕最中间
        // height: 100, //设置高度
        // width: 100, //设置宽度
        // color: Colors.white, //设置颜色
        // margin: EdgeInsets.all(10), //设置外间距
        // padding: EdgeInsets.all(10), //设置内间距
      ),
    ),
    debugShowCheckedModeBanner: false,
  ));
}

2. Image

//加载网络图片
Image.network(图片地址) 
//加载本地图片
Image.asset('xx.png')
Image(image: AssetImage('xx.png'))

3.添加间距/占位

//添加横向10占位
Container(width: 10)
SizedBox(width: 10)

4.RichText

void main() {
  runApp(MaterialApp(
    home: Scaffold(
      appBar: AppBar(title: Text('Hello Flutter')),
      body: RichTextDemo(),
    ),
    debugShowCheckedModeBanner: false,
  ));
}

class RichTextDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return RichText(
      maxLines: 3, //最多展示3行
      overflow: TextOverflow.ellipsis, //文本截断模式,以省略号
      text: TextSpan(
          text: '我',
          style: const TextStyle(
              fontSize: 25,
              fontWeight: FontWeight.bold,
              color: Colors.red
          ),
          children: [
            TextSpan(
                text: '正在读',
                style: const TextStyle(
                    fontSize: 20,
                    fontWeight: FontWeight.bold,
                    color: Colors.purple
                )
            ),
            TextSpan(
                text: '《Flutter进阶》',
                style: const TextStyle(
                    fontSize: 18,
                    fontWeight: FontWeight.bold,
                    color: Colors.black
                )
            )]
      ),
    );
  }
}
RichText.png

4.图片切圆角

Widget build(BuildContext context) {
    return Container(
        width: 50,
        height: 50,
        decoration: BoxDecoration(
          borderRadius: BorderRadius.circular(12),
          image: DecorationImage(
              image: AssetImage('images/image.png'),
              fit: BoxFit.cover
          ),
        )
    );
  }
上一篇 下一篇

猜你喜欢

热点阅读