zl程序教程

您现在的位置是:首页 >  其他

当前栏目

flutter基础布局代码

2023-03-07 09:11:36 时间

骨灰级别的基础代码,只是做个简单的记录,方便以后看

都是用dart写的,都在flutter项目下的lib文件夹下

import 'package:flutter/material.dart';
import './tomFont.dart';

void main() {
  runApp(
    MaterialApp(
      theme: ThemeData(
        primarySwatch: Colors.yellow,
      ),
      home: Scaffold(
        appBar:AppBar(title: Text("个人中心")),
        // body: Column(
        //   children: [
        //     // MyApp(),
        //     // MyBtn(),
        //     //===2==
        //     // MyImage(),
        //     // SizedBox(height: 10,),
        //     // MyImageCir(),
        //     // SizedBox(height: 10,),
        //     // ClipImage(),
        //     //=====end2

        //   ], 
        // ),
        body: DataGridList(),
      )
    )
  );
}

class MyApp extends StatelessWidget{
   MyApp({Key? key}):super(key:key);

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return  Center(child: Container(
      width: 200,
      height: 100,
      decoration: BoxDecoration(
        color: Colors.red,
        borderRadius: BorderRadius.circular(10),
      ),
      child: Text("Holo dart",style: TextStyle(
        color: Colors.white),),
      ),
      
    );
  }
}

class MyBtn extends StatelessWidget {
  const MyBtn({super.key});

  @override
  Widget build(BuildContext context) {
    return Container(
      alignment: Alignment.center,
      height: 40,
      width: 200,
      margin: EdgeInsets.all(10),
      decoration: BoxDecoration(
        color: Colors.blue, 
        borderRadius: BorderRadius.circular(15),
      ),
      child: Text("按钮",style: TextStyle(
        color: Colors.white,
        fontSize: 20,
        ),),
      );
  }
}

class MyImage extends StatelessWidget {
  const MyImage({super.key});

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Container(
        margin: EdgeInsets.fromLTRB(0, 20, 0, 0),
        height: 200,
        width: 200,
        decoration: BoxDecoration(
          color: Colors.yellow,
        ),
        child: Image.network(
          "https://images.wallpaperscraft.com/image/single/tower_wall_building_476379_240x320.jpg",
          //scale: 2, 缩放
          //alignment: Alignment.centerLeft,
          //fit:BoxFit.fill,
          fit: BoxFit.cover,
          ),
      ),
    );
  }
}

class MyImageCir extends StatelessWidget {
  const MyImageCir({super.key});

  @override
  Widget build(BuildContext context) {
    return Container(
      height: 150,
      width: 150,
      decoration: BoxDecoration(
        color: Colors.yellow,
        borderRadius: BorderRadius.circular(100),
        image: DecorationImage(
          image: NetworkImage("https://images.wallpaperscraft.com/image/single/puppy_labrador_retriever_look_95296_240x320.jpg"),
          fit:BoxFit.cover,
        )

      ),
    );
  }
}

class ClipImage extends StatelessWidget {
  const ClipImage({super.key});

  @override
  Widget build(BuildContext context) {
    return ClipOval(
      child: Image.network("https://images.wallpaperscraft.com/image/single/cat_cosmonaut_space_suit_130111_240x320.jpg",
        width: 150,
        height: 150,
        fit: BoxFit.cover,  
      ),
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        SizedBox(height: 20,),
        Icon(Icons.home,size: 35,color: Colors.red,),
        Icon(Icons.email,size: 35,color: Colors.purple),
        SizedBox(height: 10,),
        Icon(TomIcon.weixin,size: 40,color: Colors.orange,),
        SizedBox(height: 10,),
        Icon(TomIcon.book,size: 40,color: Colors.green,),
      ],
    );
  }
}


class MyListPage extends StatelessWidget {
  const MyListPage({super.key});
  // 购物车
  @override
  Widget build(BuildContext context) {
    return ListView(
      children: <Widget>[
        ListTile(
          leading: Icon(Icons.home,size: 25,),
          title: Text("首页"),),
        Divider(),
        ListTile(
          leading: Icon(Icons.assessment,size: 25,color:Colors.red,),
          title: Text("全部订单"),
        ),
        Divider(),
        ListTile(
          leading: Icon(Icons.payment,size: 25,color: Colors.green,),
          title:Text("未付款"),
        ),
        Divider(),
        ListTile(
          leading: Icon(Icons.local_car_wash,size: 25,color: Colors.orange,),
          title:Text("待收货"),
        ),
        Divider(),
        ListTile(
          leading: Icon(Icons.favorite,size: 25,color: Colors.lightGreen,),
          title:Text("我的收藏")
        ),
        Divider(),
        ListTile(
          leading: Icon(Icons.people,size: 25,color:Colors.black54,),
          title:Text("在线客服"),
          trailing: Icon(Icons.chevron_right_sharp),
        )
      ],
    );
  }
}



class NewList extends StatelessWidget {
  const NewList({super.key});
// news list view
  @override
  Widget build(BuildContext context) {
    return ListView(
      padding: EdgeInsets.fromLTRB(5, 10, 5, 20),
      children: <Widget>[
        ListTile(
          leading: Image.network("https://gimg3.baidu.com/rel/src=https%3A%2F%2Fgips0.baidu.com%2Fit%2Fu%3D3435646008%2C2854176988%26fm%3D3028%26app%3D3028%26f%3DPNG%26fmt%3Dauto%26q%3D75%26size%3Df1138_640&refer=http%3A%2F%2Fwww.baidu.com&app=2010&size=w560&n=0&g=0n&q=100&fmt=auto?sec=1670605200&t=05e7c2d1e04c689972a0f2cc32166ff0"),
          title:Text("媒体:一两月内或现大规模疫情冲击"),
          subtitle: Text("12月7日,有专家表示,随着防控措施的放宽,未来一到两个月。"),
        ),
        Divider(),
        ListTile(
          leading: Image.network("https://img.nba.cn/image/nms/cms/c8d99b79-52f5-417d-9cc4-a10c7ad7bbe5/%E5%B0%81%E9%9D%A2.jpg?auth_key=1670513400-1670513400-0-414301d9c86ff7ffcfaeeeee831085c0&cdn_provider=110&ver=0.1.6"),
          title: Text("逐渐步入正规的湖人应该怎么补强?"),
          subtitle: Text("随着湖人打出了一波8胜2负的战绩,他们对本赛季阵容的探索似乎也逐渐步入了正轨。特别需要注意的是他们在客场战胜雄鹿的那场比赛。"),
        )
      ],
    );
  }
}

class HorListView extends StatelessWidget {
  const HorListView({super.key});

  @override
  Widget build(BuildContext context) {
    return SizedBox(
      height: 120,
      child: ListView(
        children: <Widget>[
            Container(
                width: 120,
                decoration: BoxDecoration(
                  color: Colors.red,
                ),
            ),
            Container(
                width: 120,
                decoration: BoxDecoration(
                  color: Colors.green,
                ),
            ),
            Container(
                width: 120,
                decoration: BoxDecoration(
                  color: Colors.yellow,
                ),
            ),
            Container(
                width: 120,
                decoration: BoxDecoration(
                  color: Colors.greenAccent,
                ),
            ),
            Container(
                width: 120,
                decoration: BoxDecoration(
                  color: Colors.blue,
                ),
            ),
            Container(
                width: 120,
                decoration: BoxDecoration(
                  color: Colors.orange,
                ),
            ),
            Container(
                width: 120,
                decoration: BoxDecoration(
                  color: Colors.deepOrange,
                ),
            ),
        ],
        scrollDirection: Axis.horizontal,
    ),
    );
  }
}

class ListByFun extends StatelessWidget {
  const ListByFun({super.key});

  List<Widget> _initListData(){
    List<Widget> list=[];
    for (var i = 0; i < 20; i++) {
      list.add(ListTile(
        title: Text("我是第${i+1}个列表"),
      ));
    }
    return list;
  }

  @override
  Widget build(BuildContext context) {
    return ListView(
      children: _initListData(),
    );
  }
}


class MyGrid extends StatelessWidget {
  const MyGrid({super.key});

  @override
  Widget build(BuildContext context) {
    return GridView.extent(
      maxCrossAxisExtent: 100,
      children: [
          Icon(Icons.bike_scooter),
          Icon(Icons.bike_scooter),
          Icon(Icons.bike_scooter),
          Icon(Icons.bike_scooter),
          Icon(Icons.bike_scooter),
          Icon(Icons.bike_scooter),

      ],
    );
  }
}


class DataGridList extends StatelessWidget {
  const DataGridList({super.key});

  List<Widget> _initFridViewData(){
    List<Widget> templist=[];
    for (var i = 0; i < 12; i++) {
      templist.add(
        Container(
          alignment: Alignment.center,
          decoration: BoxDecoration(
            color:Colors.pink
          ),
          child: Text("No.${i} data"),
        )
      );
    }
    return templist;
  }

  @override
  Widget build(BuildContext context) {
    return GridView.count(
      padding: EdgeInsets.all(18),
      crossAxisSpacing: 8,
      mainAxisSpacing: 8,
      crossAxisCount: 2,  //count
      //maxCrossAxisExtent: 120, //extend 快速创建横轴子元素固定最大长度的gridview
      childAspectRatio: 1.5, //宽高比
      children: [
        Container(
          decoration: BoxDecoration(
            border: Border.all(
              color: Colors.black26
            )
          ),
          child: Column(children: [

            Image.network(
              "https://img.nba.cn/image/nms/cms/f9fcdcc7-417f-49eb-9055-be3cd56418e0/GettyImages-1245494947.jpeg?auth_key=1670674500-1670674500-0-192116258dd7519061bda151807da9c1&cdn_provider=110&ver=0.1.6",
              fit: BoxFit.cover,
              ),
              SizedBox(height: 8,),
              Text("湖人122-133费城"),
            Image.network(
              "https://img.nba.cn/image/nms/cms/f9fcdcc7-417f-49eb-9055-be3cd56418e0/GettyImages-1245494947.jpeg?auth_key=1670674500-1670674500-0-192116258dd7519061bda151807da9c1&cdn_provider=110&ver=0.1.6",
              fit: BoxFit.cover,
              ),
              SizedBox(height: 10,),
              Text("湖人122-133费城"),   
          ],),
          
        ),
      ],
    );
  }
}
import 'package:flutter/material.dart';

void main(){
  runApp(const TomApp());
}

class TomApp extends StatelessWidget {
  const TomApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(title: Text("Flutter App"),),
        body: HomePage(),
      ),
    );
  }
}

class HomePage extends StatelessWidget {
  const HomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return ListView(
      children: [
        Container(
          width: double.infinity,
          height: 200,
          color: Colors.black,
        ),Row(
          children: [
            Expanded(
              flex: 2,
              child: 
              Image.network(
                "https://img.nba.cn/image/nms/cms/0b911e82-b2eb-4e95-8de0-90718c5d5fa7/GettyImages-1448055548.jpg?auth_key=1670688000-1670688000-0-5b82f07b817acc3191ac75d632d152be&cdn_provider=110&ver=0.1.6",
                fit: BoxFit.cover,),
                ),
            // Expanded(flex:1,child: Column(
            //   children: [
            //     Expanded(flex:1,child: Image.network("https://img.nba.cn/image/nms/cms/e047c2b7-40ca-4ddb-899d-fb225ab0eea2/GettyImages-1448054855.jpg?auth_key=1670688000-1670688000-0-34d3946892969d5489c8a2087dcb5037&cdn_provider=110&ver=0.1.6",fit: BoxFit.cover,)),
            //     Expanded(flex:1,child: Image.network("https://img.nba.cn/image/nms/cms/21a1adf4-bd66-4abb-9183-f0f23605c420/GettyImages-1448055889.jpg?auth_key=1670688000-1670688000-0-6f1bd7ff505dc69013663f1ded2fd7ee&cdn_provider=110&ver=0.1.6",fit: BoxFit.cover,)),
            //   ],
            // ),),
            Expanded(flex: 1,child: SizedBox(
              height: 180,
              child: Column(
              children: [
                Expanded(flex:1,child: Image.network("https://img.nba.cn/image/nms/cms/e047c2b7-40ca-4ddb-899d-fb225ab0eea2/GettyImages-1448054855.jpg?auth_key=1670688000-1670688000-0-34d3946892969d5489c8a2087dcb5037&cdn_provider=110&ver=0.1.6",fit: BoxFit.cover,)),
                Expanded(flex:1,child: Image.network("https://img.nba.cn/image/nms/cms/21a1adf4-bd66-4abb-9183-f0f23605c420/GettyImages-1448055889.jpg?auth_key=1670688000-1670688000-0-6f1bd7ff505dc69013663f1ded2fd7ee&cdn_provider=110&ver=0.1.6",fit: BoxFit.cover,)),
              ],
            ),
            ),)
          ],
        )
      ],
    );

  }
}

class IconContainer extends StatelessWidget {

  Color color;
  IconData icon;


  IconContainer(this.icon,{super.key,required this.color});

  @override
  Widget build(BuildContext context) {
    return Container(
      alignment: Alignment.center,
      color: this.color,
      height: 100,
      width: 100,
      child: Icon(this.icon,color: Colors.white,size: 28,),
    );
  }
}
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        // This is the theme of your application.
        //
        // Try running your application with "flutter run". You'll see the
        // application has a blue toolbar. Then, without quitting the app, try
        // changing the primarySwatch below to Colors.green and then invoke
        // "hot reload" (press "r" in the console where you ran "flutter run",
        // or simply save your changes to "hot reload" in a Flutter IDE).
        // Notice that the counter didn't reset back to zero; the application
        // is not restarted.
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  // This widget is the home page of your application. It is stateful, meaning
  // that it has a State object (defined below) that contains fields that affect
  // how it looks.

  // This class is the configuration for the state. It holds the values (in this
  // case the title) provided by the parent (in this case the App widget) and
  // used by the build method of the State. Fields in a Widget subclass are
  // always marked "final".

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      // This call to setState tells the Flutter framework that something has
      // changed in this State, which causes it to rerun the build method below
      // so that the display can reflect the updated values. If we changed
      // _counter without calling setState(), then the build method would not be
      // called again, and so nothing would appear to happen.
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    // This method is rerun every time setState is called, for instance as done
    // by the _incrementCounter method above.
    //
    // The Flutter framework has been optimized to make rerunning build methods
    // fast, so that you can just rebuild anything that needs updating rather
    // than having to individually change instances of widgets.
    return Scaffold(
      appBar: AppBar(
        // Here we take the value from the MyHomePage object that was created by
        // the App.build method, and use it to set our appbar title.
        title: Text(widget.title),
      ),
      body: Center(
        // Center is a layout widget. It takes a single child and positions it
        // in the middle of the parent.
        child: Column(
          // Column is also a layout widget. It takes a list of children and
          // arranges them vertically. By default, it sizes itself to fit its
          // children horizontally, and tries to be as tall as its parent.
          //
          // Invoke "debug painting" (press "p" in the console, choose the
          // "Toggle Debug Paint" action from the Flutter Inspector in Android
          // Studio, or the "Toggle Debug Paint" command in Visual Studio Code)
          // to see the wireframe for each widget.
          //
          // Column has various properties to control how it sizes itself and
          // how it positions its children. Here we use mainAxisAlignment to
          // center the children vertically; the main axis here is the vertical
          // axis because Columns are vertical (the cross axis would be
          // horizontal).
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times for Tom:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}