Flutter基础

132 阅读2分钟

Dart数据类型

取余,取整

void main(){
  int a=15;
  int b=2;
  print(a%b);   //取余 1
  print(a~/b);  //取整 7
  print(a/b); //  7.5
}

import 'package:flutter/cupertino.dart';

/// 5.常用数据类型
class DataType extends StatefulWidget {
  @override
  _DataTypeState createState() => _DataTypeState();
}

class _DataTypeState extends State<DataType> {
  @override
  Widget build(BuildContext context) {
    // _numType();
    // _stringType();
    // _boolType();
    // _listType();
    return Container(
      child: Text("常用数据类型,请查看控制器"),
    );
  }

  /// 1.数字类型
  void _numType() {
    num num1 = -1.0; //是数字类型的父类
    num num2 = 2;//是数字类型的父类
    int int1 = 3; //只能是证书
    double double1 = 1.68;//双精度
    print("num:$num1\n num2:$num2\n int1:$int1\n  double1:$double1");

    //求绝对值
    print(num1.abs());
    //转换成int
    print(num1.toInt());
    //转换成double
    print(num1.toDouble());
  }

  /// 2.字符串
  _stringType() {
    String str1 = "双引号字符串";
    String str2 = '单引号字符串';
    String str3 = 'str1和str2: $str1 $str2';
    String str4 = 'str1:' +str1+ 'str2:'+str2;
    print("str3---:$str3\n  str4---:$str4");
    //常用方法
    String str5 = "常用数据类型,请查看控制台输出";
    //字符串截取
    print(str5.substring(0,6));
    //获取指定字符串位置
    print(str5.indexOf('类型'));
    // startsWith  replaceAll  contains split
  }

  ///3.布尔类型
  _boolType() {
      bool success = true,  fail = false;
      print(success);
      print(success || fail);//true
      print(success && fail);//false
   }

   /// 4.集合
   _listType() {
      print("----------listType-----------");
      //集合的初始化方式
      List list1 = [1,2,3,4,'集合'];
      print(list1);
      //集合泛型
      List<int> list2 = [];
      // list2 = list1; 错误做法,类型转换错误 type 'List<dynamic>' is not a subtype of type 'List<int>'
      List list3 = [];
      //通过add方法添加元素
      list3.add("addList3");
      list3.addAll(list1);
      print(list3);
      //生成函数
     List list4 = List.generate(5,(index) => index *2);
     print(list4);

      /// 遍历集合的方式
      for(int i=0; i<list1.length;i++){
        print(list1[i]);
      }

      for(var i  in list1){
        print(i);
      }

      list1.forEach((value){
        print(value);
      });
   }

    /// 5. map 是将key和value相关联的对象
    _listMap() {
      print("-------_mapType--------");
      Map names = {"allison":"英文名"};
      print(names);

      Map ages = {};
      ages["rose"] = 16;
      ages["lily"] = 18;
      print(ages);

      //map遍历1
      ages.forEach((k,v){
        print('---$k, ----$v');
      });
      
      //map遍历2
      Map ages2 = ages.map((k,v){
        return MapEntry(v, k);
      });
      print(ages2);
      
      //map遍历3
      for(var key in ages.keys) {
        print('$key  ${ages[key]}');
      }

    }

StatefulWidget

StatefulWidget生命周期

Tips:无状态的widget的生命周期方只有 createElement 和 build两个生命周期方法
1. 初始化时期 createState 和 initState
2. 更新时期 didChangeDependencies 、build 、didUpdateWidget
3. 销毁时期 deactivate 和 dispose

监听生命周期

import 'package:flutter/material.dart';

///如何获取flutter应用的生命周期
///WidgetsBindingObserver 是一个widgets绑定观察器,通过它我们可以监听应用的生命周期
class AppLifeCycle extends StatefulWidget {
  @override
  _AppLifeCycleState createState() => _AppLifeCycleState();
}

class _AppLifeCycleState extends State<AppLifeCycle> with WidgetsBindingObserver {

  ///添加监听器
  @override
  void initState() {
    WidgetsBinding.instance.addObserver(this);
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('flutter应用生命周期'),
      ),
      body: Container(
        child: Text('flutter应用生命周期'),
      ),
    );
  }

  /// 生命周期发生变化时,会调用该方法
  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    super.didChangeAppLifecycleState(state);
    print('state = $state');
    if(state == AppLifecycleState.paused) {
      print('APP进入后台');
    } else  if (state == AppLifecycleState.resumed) {
      print('APP进入前台');
    } else  if (state == AppLifecycleState.inactive) {
      // print('应用处于非激活状态,并且未接收用户时调用,比如:来电话');
    }
  }

  ///移除监听器
  @override
  void dispose() {
    WidgetsBinding.instance.removeObserver(this);
    super.dispose();
  }
}

类方法和实例方法

///// 实例方法
// void xxx() {}
// /// 包私有实例方法
// void _xxx() {}
// /// 类方法
// static void xxx() {}
// /// 包私有类方法
// static void _xxx() {}

参考链接

Flutter中StatefulWidget页面生命周期

Flutter中Dart基础