API Table Investasi Admin
This commit is contained in:
21
templates/simple/bloc.tmpl
Normal file
21
templates/simple/bloc.tmpl
Normal file
@@ -0,0 +1,21 @@
|
||||
import 'dart:async';
|
||||
import 'dart:developer' as developer;
|
||||
|
||||
import 'package:bloc/bloc.dart';
|
||||
import 'package:${appName}${relative}/index.dart';
|
||||
|
||||
class ${upperName}Bloc extends Bloc<${upperName}Event, ${upperName}State> {
|
||||
|
||||
${upperName}Bloc(${upperName}State initialState) : super(initialState){
|
||||
on<${upperName}Event>((event, emit) {
|
||||
return emit.forEach<${upperName}State>(
|
||||
event.applyAsync(currentState: state, bloc: this),
|
||||
onData: (state) => state,
|
||||
onError: (error, stackTrace) {
|
||||
developer.log('$error', name: '${upperName}Bloc', error: error, stackTrace: stackTrace);
|
||||
return Error${upperName}State(error.toString());
|
||||
},
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
34
templates/simple/event.tmpl
Normal file
34
templates/simple/event.tmpl
Normal file
@@ -0,0 +1,34 @@
|
||||
import 'dart:async';
|
||||
import 'dart:developer' as developer;
|
||||
|
||||
import 'package:${appName}${relative}/index.dart';
|
||||
import 'package:meta/meta.dart';
|
||||
|
||||
@immutable
|
||||
abstract class ${upperName}Event {
|
||||
Stream<${upperName}State> applyAsync(
|
||||
{${upperName}State currentState, ${upperName}Bloc bloc});
|
||||
}
|
||||
|
||||
class Un${upperName}Event extends ${upperName}Event {
|
||||
@override
|
||||
Stream<${upperName}State> applyAsync({${upperName}State? currentState, ${upperName}Bloc? bloc}) async* {
|
||||
yield Un${upperName}State();
|
||||
}
|
||||
}
|
||||
|
||||
class Load${upperName}Event extends ${upperName}Event {
|
||||
|
||||
@override
|
||||
Stream<${upperName}State> applyAsync(
|
||||
{${upperName}State? currentState, ${upperName}Bloc? bloc}) async* {
|
||||
try {
|
||||
yield Un${upperName}State();
|
||||
await Future.delayed(const Duration(seconds: 1));
|
||||
yield In${upperName}State('Hello world');
|
||||
} catch (_, stackTrace) {
|
||||
developer.log('$_', name: 'Load${upperName}Event', error: _, stackTrace: stackTrace);
|
||||
yield Error${upperName}State( _.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
0
templates/simple/index.tmpl
Normal file
0
templates/simple/index.tmpl
Normal file
13
templates/simple/model.tmpl
Normal file
13
templates/simple/model.tmpl
Normal file
@@ -0,0 +1,13 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
|
||||
/// use https://marketplace.visualstudio.com/items?itemName=BendixMa.dart-data-class-generator
|
||||
class ${upperName}Model extends Equatable {
|
||||
final int id;
|
||||
final String name;
|
||||
|
||||
${upperName}Model(this.id, this.name);
|
||||
|
||||
@override
|
||||
List<Object> get props => [id, name];
|
||||
|
||||
}
|
||||
23
templates/simple/page.tmpl
Normal file
23
templates/simple/page.tmpl
Normal file
@@ -0,0 +1,23 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:${appName}${relative}/index.dart';
|
||||
|
||||
class ${upperName}Page extends StatefulWidget {
|
||||
static const String routeName = '/${privateName}';
|
||||
|
||||
@override
|
||||
_${upperName}PageState createState() => _${upperName}PageState();
|
||||
}
|
||||
|
||||
class _${upperName}PageState extends State<${upperName}Page> {
|
||||
final _${privateName}Bloc = ${upperName}Bloc(Un${upperName}State());
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('${upperName}'),
|
||||
),
|
||||
body: ${upperName}Screen(${privateName}Bloc: _${privateName}Bloc),
|
||||
);
|
||||
}
|
||||
}
|
||||
20
templates/simple/provider.tmpl
Normal file
20
templates/simple/provider.tmpl
Normal file
@@ -0,0 +1,20 @@
|
||||
import 'dart:async';
|
||||
|
||||
class ${upperName}Provider {
|
||||
Future<void> loadAsync(String token) async {
|
||||
/// write from keystore/keychain
|
||||
await Future.delayed(Duration(seconds: 2));
|
||||
}
|
||||
|
||||
Future<void> saveAsync(String token) async {
|
||||
/// write from keystore/keychain
|
||||
await Future.delayed(Duration(seconds: 2));
|
||||
}
|
||||
|
||||
void test(bool isError) {
|
||||
if (isError == true){
|
||||
throw Exception('manual error');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
11
templates/simple/repository.tmpl
Normal file
11
templates/simple/repository.tmpl
Normal file
@@ -0,0 +1,11 @@
|
||||
import 'package:${appName}${relative}/index.dart';
|
||||
|
||||
class ${upperName}Repository {
|
||||
final ${upperName}Provider _${privateName}Provider = ${upperName}Provider();
|
||||
|
||||
${upperName}Repository();
|
||||
|
||||
void test(bool isError) {
|
||||
_${privateName}Provider.test(isError);
|
||||
}
|
||||
}
|
||||
84
templates/simple/screen.tmpl
Normal file
84
templates/simple/screen.tmpl
Normal file
@@ -0,0 +1,84 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:${appName}${relative}/index.dart';
|
||||
|
||||
class ${upperName}Screen extends StatefulWidget {
|
||||
const ${upperName}Screen({
|
||||
required ${upperName}Bloc ${privateName}Bloc,
|
||||
Key? key,
|
||||
}) : _${privateName}Bloc = ${privateName}Bloc,
|
||||
super(key: key);
|
||||
|
||||
final ${upperName}Bloc _${privateName}Bloc;
|
||||
|
||||
@override
|
||||
${upperName}ScreenState createState() {
|
||||
return ${upperName}ScreenState();
|
||||
}
|
||||
}
|
||||
|
||||
class ${upperName}ScreenState extends State<${upperName}Screen> {
|
||||
${upperName}ScreenState();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_load();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BlocBuilder<${upperName}Bloc, ${upperName}State>(
|
||||
bloc: widget._${privateName}Bloc,
|
||||
builder: (
|
||||
BuildContext context,
|
||||
${upperName}State currentState,
|
||||
) {
|
||||
if (currentState is Un${upperName}State) {
|
||||
return Center(
|
||||
child: CircularProgressIndicator(),
|
||||
);
|
||||
}
|
||||
if (currentState is Error${upperName}State) {
|
||||
return Center(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: <Widget>[
|
||||
Text(currentState.errorMessage ),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: 32.0),
|
||||
child: RaisedButton(
|
||||
color: Colors.blue,
|
||||
child: Text('reload'),
|
||||
onPressed: _load,
|
||||
),
|
||||
),
|
||||
],
|
||||
));
|
||||
}
|
||||
if (currentState is In${upperName}State) {
|
||||
return Center(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: <Widget>[
|
||||
Text(currentState.hello),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
return Center(
|
||||
child: CircularProgressIndicator(),
|
||||
);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
void _load() {
|
||||
widget._${privateName}Bloc.add(Load${upperName}Event());
|
||||
}
|
||||
}
|
||||
42
templates/simple/state.tmpl
Normal file
42
templates/simple/state.tmpl
Normal file
@@ -0,0 +1,42 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
|
||||
abstract class ${upperName}State extends Equatable {
|
||||
${upperName}State();
|
||||
|
||||
@override
|
||||
List<Object> get props => [];
|
||||
}
|
||||
|
||||
/// UnInitialized
|
||||
class Un${upperName}State extends ${upperName}State {
|
||||
|
||||
Un${upperName}State();
|
||||
|
||||
@override
|
||||
String toString() => 'Un${upperName}State';
|
||||
}
|
||||
|
||||
/// Initialized
|
||||
class In${upperName}State extends ${upperName}State {
|
||||
In${upperName}State(this.hello);
|
||||
|
||||
final String hello;
|
||||
|
||||
@override
|
||||
String toString() => 'In${upperName}State $hello';
|
||||
|
||||
@override
|
||||
List<Object> get props => [hello];
|
||||
}
|
||||
|
||||
class Error${upperName}State extends ${upperName}State {
|
||||
Error${upperName}State(this.errorMessage);
|
||||
|
||||
final String errorMessage;
|
||||
|
||||
@override
|
||||
String toString() => 'Error${upperName}State';
|
||||
|
||||
@override
|
||||
List<Object> get props => [errorMessage];
|
||||
}
|
||||
Reference in New Issue
Block a user