Files
hipmi/templates/mutable/screen.tmpl
2025-02-04 22:35:44 +08:00

98 lines
2.9 KiB
Cheetah

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: ElevatedButton(
style: ElevatedButton.styleFrom(
backgroundColor: 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),
const Text('Flutter files: done'),
Padding(
padding: const EdgeInsets.only(top: 32.0),
child: ElevatedButton(
style: ElevatedButton.styleFrom(
backgroundColor: Colors.red,
),
child: Text('throw error'),
onPressed: () => _load(true),
),
),
],
),
);
}
return Center(
child: CircularProgressIndicator(),
);
});
}
void _load([bool isError = false]) {
widget._${privateName}Bloc.add(Load${upperName}Event(isError));
}
}