测试title


发文时间:2018年12月11日 22:09:57     编辑:卡卡      标签:title 531


title

代码丢失测试

import 'dart:async';
import 'dart:ffi';
import 'dart:math';
 
import 'package:flutter/material.dart';
 
void main() {
  runApp(MyApp());
}
 
class MyApp extends StatelessWidget {
// This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Aaron',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}
 
class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);
  final String title;
 
  @override
  _MyHomePageState createState() => _MyHomePageState();
}
 
class _MyHomePageState extends State {
  @override
  void initState() {
    print('已热加载APP');
    super.initState();
  }
 
  @override
  void dispose() {
//销毁时关闭stream
    _InputController.close();
    super.dispose();
  }
 
//键盘输入的stream流 (广播)
  final _InputController = StreamController.broadcast();
  final _scoreController = StreamController.broadcast();
 
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: StreamBuilder(
          /*
      todo计分的方式很多,如监听_InputController流的数据、
      或单独拉一个stf动态widget,或增加变量setState等
      以下用transform的方式去做,使其性能在低消耗的情况下 形成数据的监听 和值改变等
       this._scoreController.stream.transform(TallyTransformer())
        相当于把当前监听的stream转换成我们自己转后的数据
     */
          stream: this._scoreController.stream.transform(TallyTransformer()),
          builder: (BuildContext context, AsyncSnapshot snapshot) {
            if (snapshot.hasData) {
              return Text(
                'Score分数:${snapshot.data}',
                style: TextStyle(fontSize: 24),
              );
            }
            return Text(
              'Score分数:0',
              style: TextStyle(fontSize: 24),
            );
          },
        ),
      ),
      body: Stack(
        children: [
          //数字题目  ...把list拆分出来
          ...List.generate(
            10,
            (index) => Puzzle(
              inputStream: _InputController.stream,
              scoreStream: _scoreController,
            ),
          ),
 
          Align(
            //输入答案
            alignment: Alignment.bottomCenter,
            child: KeyPad(this._InputController),
          ),
        ],
      ),
    );
  }
}
 
//处理当前分数汇总  (处理数据流之间的变化 StreamTransformer)
class TallyTransformer implements StreamTransformer {
  int sum = 0;
  StreamController _controller = StreamController();
 
  @override
  Stream bind(Stream stream) {
/*
bind  数据流刚开始接入的时候 给的是初始时的数据流
目的是把初始的数据流转换成我们所需的数据流 后而返回
 */
//源头stream
    stream.listen((event) {
      //在这里可以做很多很多操作
      sum += event;
      _controller.add(sum);
    });
 
//返回的stream
    return _controller.stream;
  }
 
//cast 为stream类型检查
  @override
  StreamTransformer cast() =>
      StreamTransformer.castFrom(this); //让其自动做检查
}
 
//题目
class Puzzle extends StatefulWidget {
//inputStream键盘输入的值
  final inputStream;
  final scoreStream;
  const Puzzle({Key key, this.inputStream, this.scoreStream}) : super(key: key);
  @override
  _PuzzleState createState() => _PuzzleState();
}
 
//with 动画SingleTickerProviderStateMixin
class _PuzzleState extends State with SingleTickerProviderStateMixin {
  int a, b;
  Color color;
  double x;
  AnimationController _controller;
 
//重新初始化
  reset([from = 0.0]) {
    a = Random().nextInt(5) + 1;
    b = Random().nextInt(5);
    x = Random().nextDouble() * 320;
    color = Colors.primaries[Random().nextInt(Colors.primaries.length)][200];
    _controller.duration =
        Duration(milliseconds: Random().nextInt(5000) + 5000);
 
//让动画循环,from
    _controller.forward(from: from);
  }
 
  @override
  void initState() {
//初始化动画
    _controller = AnimationController(
      vsync: this,
    );
 
//重置动画    0.0-1.0 让其随机起始位 让动画随机在起始位或者在中间显示
    reset(Random().nextDouble());
 
//当动画停止的时候重置下题目和让组件回到初始位置
    _controller.addStatusListener((status) {
      if (status == AnimationStatus.completed) {
        //减分
        widget.scoreStream.add(-1);
        reset();
      }
    });
 
//监听当前用户键盘的输入值
    widget.inputStream.listen((input) {
      if (input == a + b) {
        //加分
        widget.scoreStream.add(1);
        reset();
      }
    });
 
    super.initState();
  }
 
  @override
  Widget build(BuildContext context) {
    return AnimatedBuilder(
      animation: _controller,
      builder: (context, child) {
        return Positioned(
          left: x,
          top: 680 * _controller.value - 100,
          child: Container(
            decoration: BoxDecoration(
              color: color.withOpacity(0.5), //半透明 (Opacity透明组件)
              border: Border.all(color: Colors.black),
              borderRadius: BorderRadius.circular(24),
            ),
            padding: EdgeInsets.all(8.0),
            child: Text(
              "$a+$b",
              style: TextStyle(fontSize: 24),
            ),
          ),
        );
      },
    );
  }
}
 
//键盘
class KeyPad extends StatelessWidget {
  final StreamController _controller;
  KeyPad(this._controller, {Key key}) : super(key: key);
 
  @override
  Widget build(BuildContext context) {
    return GridView.count(
      shrinkWrap: true, //不让GridView上下占满
      padding: EdgeInsets.all(0.0), //取消默认下方留空(默认底部适配小白条啥的)
      physics: NeverScrollableScrollPhysics(), //让GridView不能滚动
      childAspectRatio: 2 / 1,
      crossAxisCount: 3,
      children: List.generate(9, (index) {
        // ignore: deprecated_member_use
        return FlatButton(
            shape: RoundedRectangleBorder(), //取消圆角边
            color: Colors.primaries[index][200],
            onPressed: () {
              _controller.add(index + 1);
            },
            child: Text('${index + 1}', style: TextStyle(fontSize: 24)));
      }),
    );
  }
}


代码检查

2.1、 PHP中字符串可以使用哪三种定义方法和各自的区别
  定义方式
    单引号 ''
    双引号“”
    heredoc和newdoc
  区别
     单引号:不解析变量和转义字符,只能解析单引号和反斜线本身。(单引号
     的解析速度高于双引号)
     双引号:可以解析变量和所有的转义字符。
     heredoc和nowdoc:heredoc类似双引号,nowdoc类型单引号,两者都适合处
     理大文本。
      用法如下
       <?php
            $name="Aaron";
            $a= <<< 
                    "abc"$name
                    "123"
             ;
            // 结束需要独立一行且前后不能空格
            echo $a;
            ?>

测66666

 

若无特殊说明,此文章为博主原创。
写稿不易,如需转载,请注明出处: https://www.aaroner.cn/art/15.html




SITE MAP

  FOLLOW US