dart 飞镖决赛和Const

飞镖决赛和Const

Dart Final And Const.dart
/* [Note]
   Instance variables can be final but not const.
   Final instance variables must be initialized 
   before the constructor body starts 
   — at the variable declaration, 
   by a constructor parameter, 
   or in the constructor’s initializer list.
*/
final wontChangeThisName = 'Awesome App';
final String wontChangeThisNameEither = 'Huh !!';


/* [Note]
   If the const variable is at the class level,
   mark it static const. 
*/
const bar = 1000000; // Unit of pressure (dynes/cm2)
const double atm = 1.01325 * bar; // Standard atmosphere

var foo = const [];
final bar = const [];
const baz = []; // Equivalent to `const []`

foo = [5, 6, 7];  // Ok. Was const[]
baz = [42] // Error.

dart 飞镖类型和变量

飞镖类型和变量

Dart Types And Variables.dart
/*********  STRINGS *********/
var name = 'John Doe';
/*  Explicit declaration  */
String cousin = 'Jane Doe';


/*********  Number *********/
/*  subtypes of num : int and double  */
/*  Integers (64 bits max)
    Values On Dart VM :-2^63 to 2^63 - 1
    Value on Compiled JS : -2^53 to 2^53 - 1
*/
var year = 1991;
/*  Explicit declaration */
int age = 28;

/* doubles  (64 bits precision) */
var height = 6.2;
double z = 1; // (Dart 2.1) Eqv to double z = 1.0


/*********  Lists - In Dart Arrays are Lists *********/
var favFruits = ['bananas', 'apples', 'oranges'];
assert(favFruits.length == 3)
assert(favFruits[2] == 'oranges')
favFruits[0] = 'mango';
assert(favFruits[0] == 'mango')
    

var belongings = {
  'tags': ['saturn'],
  'url': '//path/to/saturn.jpg'
};


/*********  Boolean *********/
var didHomework = true;
bool areYouOK = false;

dynamic superhero = 'batman';


/********* Default Values *********/
/* Everything you can place in a variable is an Object */
int lineCount;
assert(lineCount == null);
// true

dart 飞镖样品

飞镖样品

main.dart
void main() { 
   print('hello world'); 
}

dart ListTile leading icon垂直置中#Flutter

ListTile leading icon垂直置中#Flutter

README.md
> Source: https://github.com/flutter/flutter/issues/28685#issuecomment-478130992

![](https://raw.githubusercontent.com/WingCH/Image/master/Xnip2019-06-19_20-58-51.png)
listTile_vertical_centering.dart
ListTile(
  leading: Container(
    width: 40, // can be whatever value you want
    alignment: Alignment.center,
    child: Icon(Icons.account_box, color: Colors.lightBlue),
  ),
  title: Text('title'),
  subtitle: Text('this is the subtitle'),
)

dart 飞镖基础第2部分

飞镖基础第2部分

stream_with_error_listener.dart

import 'dart:async';

Stream<int> createNumberStream(int last) async* {
  for (var i = 0; i < last; i++) {
    if(i==5) {
      throw new Exception(
        "Demo Exception when accessing 5th number"
      );
    }
    yield i;
  }
}

// Receieving events from Stream
Future<int> addEvent(Stream<int> stream) async {
  var total = 0;
  try {
    await for (var num in stream) {
      total += num;
    }
  } catch(e) {
    return -1;
  }
  return total;
}

main() async {
  var stream = createNumberStream(6);
  stream.listen(
    (x) => print("num : $x"),
    onError: (err) => print("error: $err"),
    onDone: () => print("finished")
  );
}

dart 飞镖基础第2部分

飞镖基础第2部分

stream_with_error.dart

import 'dart:async';

Stream<int> createNumberStream(int last) async* {
  for (var i = 0; i < last; i++) {
    if(i==5) {
      throw new Exception(
        "Demo Exception when accessing 5th number"
      );
    }
    yield i;
  }
}

// Receieving events from Stream
Future<int> addEvent(Stream<int> stream) async {
  var total = 0;
  try {
    await for (var num in stream) {
      total += num;
    }
  } catch(e) {
    return -1;
  }
  return total;
}

main() async {
  var stream = createNumberStream(6);
  var total = await addEvent(stream);
  print(total);
}

dart 飞镖基础第2部分

飞镖基础第2部分

stream_3.dart

import 'dart:async';

Stream<int> createNumberStream(int last) async* {
  for (var i = 0; i < last; i++) {
    yield i;
  }
}

// Receieving events from Stream
Future<int> addEvent(Stream<int> stream) async {
  var total = 0;
  await for (var num in stream) {
    total += num;
  }
  return total;
}

main() async {
  var stream = createNumberStream(5);
  var total = await addEvent(stream);
  print(total);
}

dart 飞镖基础第2部分

飞镖基础第2部分

stream_2.dart

import 'dart:async';

Stream<int> createNumberStream(int last) async* {
  for (var i = 0; i < last; i++) {
    yield i;
  }
}

// Receieving events from Stream
Future<void> printStream(Stream<int> stream) async {
  await for (var num in stream) {
    print(num);
  }
}

main() async {
  var stream = createNumberStream(5);
  printStream(stream);
}

dart 飞镖基础第2部分

飞镖基础第2部分

stream.dart

import 'dart:async';

Stream<int> createNumberStream(int last) async* {
  for (var i = 0; i < last; i++) {
    yield i;
  }
}

printStream(Stream stream) {
  stream.listen((s) => print(s));
}

main() async {
  var stream = createNumberStream(5);
  printStream(stream);

  var numbers = [1,2,3,4,5];
  stream = new Stream.fromIterable(numbers);
  printStream(stream);
}

dart Dart Future API 4

Dart Future API 4

dart_future_await.dart
import 'dart:async';

const data = "I'm expansive data";

String getData(data) {
  return data;
}

Future<String> getDataA() async {
  var data = await getData("dataA");
  return data;
}

Future<String> getDataB() async {
  var data = await getData("dataB");
  return data;
}

Future<String> getDataC() async {
  var data = await getData("dataC");
  return data;
}

void printMyData(List<String> data) {
  print(data);
}

main() async {
  await Future.wait([getDataA(), getDataB(), getDataC()])
    .then((List responses) => printMyData(responses))
    .catchError((error){});
}