Hi, 我是鱼板伯爵今天要把按下萤幕时触发的事件接上去,教学内容只会撷取片段程序码,建议大家搭配完整程序码来练习。
按下萤幕时IncrementEvent事件触发并把数字传进来。
part of 'count_bloc.dart';
abstract class CountEvent extends Equatable {
const CountEvent();
@override
List<Object> get props => [];
}
class IncrementEvent extends CountEvent {
final int count;
const IncrementEvent(this.count);
@override
List<Object> get props => [count];
}
将计数器切成三个阶段,初始数字、计数成功和计数失败,成功的时候就会回传加一的结果。
part of 'count_bloc.dart';
abstract class CountState extends Equatable {
const CountState();
@override
List<Object> get props => [];
}
class CountInitial extends CountState {
final int count = 0;
@override
List<Object> get props => [count];
}
class CountSuccess extends CountState {
final int count;
const CountSuccess(this.count);
@override
List<Object> get props => [count];
}
class CountFailure extends CountState {}
IncrementEvent事件触发时把数字传进来加一然後回传加一结果。
import 'dart:async';
import 'dart:developer';
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:stunning_tribble/infrastructure/count/count_repository.dart';
part 'count_event.dart';
part 'count_state.dart';
class CountBloc extends Bloc<CountEvent, CountState> {
CountRepository _countRepository;
CountBloc({required CountRepository countRepository})
: _countRepository = countRepository,
super(CountInitial());
@override
Stream<CountState> mapEventToState(
CountEvent event,
) async* {
if (event is IncrementEvent) {
yield* _mapIncrementToState(event.count);
}
}
Stream<CountState> _mapIncrementToState(int _count) async* {
final increment = await _countRepository.increment(_count);
yield* increment.fold(
(countFailure) async* {
log("$countFailure");
yield CountFailure();
},
(count) async* {
yield CountSuccess(count);
},
);
}
}
距离游戏完成就剩最後几步了。
前言:昨天讲解完了堆积的概念,今天要来实际操作一遍,在查找资料之余,有发现一个有趣的ACM程序竞赛题...
安装专案 composer global require laravel/installer //将...
前言 在开始写 Android 之前,想先介绍如何提升写 code 的速度, 如果从现在开始习惯,并...
昨天讲到了阵列,那今天要讲怎麽让阵列的资料呈现在网页上 在阵列里,第一个资料的位置不是1而是0 所以...
在Apple watch中,我们依然可以去使用输入框 struct ContentView: Vie...