mirror of
https://github.com/Livinglist/Hacki.git
synced 2025-08-06 18:24:42 +08:00
Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
4d94c85e81 | |||
d97dea258e | |||
da898c37cc | |||
7e05aa825d |
@ -11,6 +11,8 @@ A simple Hacker News reader made with Flutter.
|
|||||||
|
|
||||||
<noscript><a href="https://liberapay.com/jfeng_for_open_source/donate"><img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg"></a></noscript>
|
<noscript><a href="https://liberapay.com/jfeng_for_open_source/donate"><img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg"></a></noscript>
|
||||||
|
|
||||||
|
[<img src="images/app_store_badge.png" height="50">](https://apps.apple.com/us/app/hacki/id1602043763) [<img src="images/google_play_badge.png" height="50">](https://play.google.com/store/apps/details?id=com.jiaqifeng.hacki&hl=en_US&gl=US)
|
||||||
|
|
||||||
|
|
||||||
Features:
|
Features:
|
||||||
- Log in using your Hacker News account.
|
- Log in using your Hacker News account.
|
||||||
|
BIN
images/app_store_badge.png
Normal file
BIN
images/app_store_badge.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
BIN
images/google_play_badge.png
Normal file
BIN
images/google_play_badge.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
@ -365,7 +365,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 0.1.5;
|
MARKETING_VERSION = 0.1.6;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.jiaqi.hacki;
|
PRODUCT_BUNDLE_IDENTIFIER = com.jiaqi.hacki;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@ -500,7 +500,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 0.1.5;
|
MARKETING_VERSION = 0.1.6;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.jiaqi.hacki;
|
PRODUCT_BUNDLE_IDENTIFIER = com.jiaqi.hacki;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@ -529,7 +529,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 0.1.5;
|
MARKETING_VERSION = 0.1.6;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.jiaqi.hacki;
|
PRODUCT_BUNDLE_IDENTIFIER = com.jiaqi.hacki;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
@ -35,11 +35,9 @@ class SubmitCubit extends Cubit<SubmitState> {
|
|||||||
text: state.text,
|
text: state.text,
|
||||||
)
|
)
|
||||||
.then((successful) {
|
.then((successful) {
|
||||||
if (successful) {
|
|
||||||
emit(state.copyWith(status: SubmitStatus.submitted));
|
emit(state.copyWith(status: SubmitStatus.submitted));
|
||||||
} else {
|
}).onError((error, stackTrace) {
|
||||||
emit(state.copyWith(status: SubmitStatus.failure));
|
emit(state.copyWith(status: SubmitStatus.failure));
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -377,7 +377,7 @@ class _ProfileScreenState extends State<ProfileScreen>
|
|||||||
showAboutDialog(
|
showAboutDialog(
|
||||||
context: context,
|
context: context,
|
||||||
applicationName: 'Hacki',
|
applicationName: 'Hacki',
|
||||||
applicationVersion: 'v0.1.5',
|
applicationVersion: 'v0.1.6',
|
||||||
applicationIcon: Image.asset(
|
applicationIcon: Image.asset(
|
||||||
Constants.hackiIconPath,
|
Constants.hackiIconPath,
|
||||||
height: 50,
|
height: 50,
|
||||||
|
@ -26,12 +26,21 @@ class _SubmitScreenState extends State<SubmitScreen> {
|
|||||||
final urlEditingController = TextEditingController();
|
final urlEditingController = TextEditingController();
|
||||||
final textEditingController = TextEditingController();
|
final textEditingController = TextEditingController();
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
super.dispose();
|
||||||
|
titleEditingController.dispose();
|
||||||
|
urlEditingController.dispose();
|
||||||
|
textEditingController.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return BlocConsumer<SubmitCubit, SubmitState>(
|
return BlocConsumer<SubmitCubit, SubmitState>(
|
||||||
listenWhen: (previous, current) => previous.status != current.status,
|
listenWhen: (previous, current) => previous.status != current.status,
|
||||||
listener: (context, state) {
|
listener: (context, state) {
|
||||||
if (state.status == SubmitStatus.submitted) {
|
if (state.status == SubmitStatus.submitted) {
|
||||||
|
Navigator.pop(context);
|
||||||
showSnackBar(
|
showSnackBar(
|
||||||
content: 'Post submitted successfully.',
|
content: 'Post submitted successfully.',
|
||||||
);
|
);
|
||||||
@ -123,6 +132,7 @@ class _SubmitScreenState extends State<SubmitScreen> {
|
|||||||
controller: titleEditingController,
|
controller: titleEditingController,
|
||||||
cursorColor: Colors.orange,
|
cursorColor: Colors.orange,
|
||||||
autocorrect: false,
|
autocorrect: false,
|
||||||
|
maxLength: 80,
|
||||||
decoration: const InputDecoration(
|
decoration: const InputDecoration(
|
||||||
hintText: 'Title',
|
hintText: 'Title',
|
||||||
focusedBorder: UnderlineInputBorder(
|
focusedBorder: UnderlineInputBorder(
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
name: hacki
|
name: hacki
|
||||||
description: A Hacker News reader.
|
description: A Hacker News reader.
|
||||||
version: 0.1.5+20
|
version: 0.1.6+21
|
||||||
publish_to: none
|
publish_to: none
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
|
Reference in New Issue
Block a user