Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

development for ON-65 #24

Open
wants to merge 1 commit into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions ios/Runner/Base.lproj/LaunchScreen.storyboard
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewcontroller="01J-lp-oVM">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
</dependencies>
<scenes>
<!--View Controller-->
<!--View controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<viewcontroller id="01J-lp-oVM" sceneMemberID="viewcontroller">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/>
<viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
<viewcontrollerLayoutGuide type="top" id="Ydg-fD-yQy"/>
<viewcontrollerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
Expand All @@ -25,7 +25,7 @@
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
</constraints>
</view>
</viewController>
</viewcontroller>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
Expand Down
12 changes: 6 additions & 6 deletions ios/Runner/Base.lproj/Main.storyboard
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewcontroller="BYZ-38-t0r">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
</dependencies>
<scenes>
<!--Flutter View Controller-->
<!--Flutter View controller-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController">
<viewcontroller id="BYZ-38-t0r" customClass="FlutterViewcontroller" sceneMemberID="viewcontroller">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
<viewcontrollerLayoutGuide type="top" id="y3c-jy-aDJ"/>
<viewcontrollerLayoutGuide type="bottom" id="wfy-db-euE"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
</viewController>
</viewcontroller>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
</scene>
Expand Down
2 changes: 1 addition & 1 deletion ios/Runner/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<key>UIViewcontrollerBasedStatusBarAppearance</key>
<false/>
</dict>
</plist>
17 changes: 17 additions & 0 deletions lib/common/apis/OursAnnouncementApi.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import 'package:ours_next/common/utils/utils.dart';
import 'package:ours_next/data/OursAnnouncementEntity.dart';
import 'package:ours_next/data/OursAnnouncementListResponseEntity.dart';

class OursAnnouncementAPI {
/// 翻页
/// refresh 是否刷新
static Future<OursAnnouncementListResponseEntity>
getOursAnnouncementList() async {
print("Get Announcement started.");
var response = await HttpUtil().get(
'/announcement/',
);
print("Get announcement finished.");
return OursAnnouncementListResponseEntity.fromJson(response);
}
}
1 change: 1 addition & 0 deletions lib/common/apis/OursApis.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
library apis;

export 'OursPostsApi.dart';
export 'OursAnnouncementApi.dart';
1 change: 1 addition & 0 deletions lib/common/routes/OursRouteNames.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
class AppRoutes {
static const INITIAL = '/';
static const ANNOUNCEMENT = "/AnnouncementPage";
}
9 changes: 9 additions & 0 deletions lib/common/routes/OursRoutePages.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'OursRoutes.dart';
import 'package:ours_next/pages/OursMainPage/index.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:ours_next/pages/OursAnnouncementPage/index.dart';

class AppPages {
static const INITIAL = AppRoutes.INITIAL;
Expand All @@ -13,6 +14,14 @@ class AppPages {
page: () => OursMainPage(),
binding: OursMainPageBinding(),
),
GetPage(
name: AppRoutes.ANNOUNCEMENT,
page: () => OursAnnouncementPage(),
binding: OursAnnouncementBinding(),
curve: Curves.easeInOutQuad,
transition: Transition.fadeIn,
transitionDuration: Duration(milliseconds: 250),
),
];

// static final unknownRoute = GetPage(
Expand Down
22 changes: 22 additions & 0 deletions lib/data/OursAnnouncementEntity.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
class OursAnnouncementEntity {
final String time;
final String timestamp;
final String content;
final String author;
final String title;
final int id;

const OursAnnouncementEntity(
{this.time = "",
this.timestamp = "",
this.content = "测试通知",
this.author = "测试发布者",
this.title = "测试标题",
this.id = 1});
factory OursAnnouncementEntity.fromJson(Map<String, dynamic> json) =>
OursAnnouncementEntity(
time: json["time"],
content: json["summary"],
author: json["author"],
);
}
16 changes: 16 additions & 0 deletions lib/data/OursAnnouncementListResponseEntity.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import 'package:ours_next/data/OursAnnouncementEntity.dart';

class OursAnnouncementListResponseEntity {
final int count = 10;
List<OursAnnouncementEntity>? items;

OursAnnouncementListResponseEntity({this.items});

factory OursAnnouncementListResponseEntity.fromJson(List<dynamic> json) =>
OursAnnouncementListResponseEntity(
items: json == []
? []
: List<OursAnnouncementEntity>.from(
json.map((x) => OursAnnouncementEntity.fromJson(x))),
);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
import 'package:flutter/material.dart';
import 'package:ours_next/OursTheme.dart';
import 'package:ours_next/data/OursAnnouncementEntity.dart';
import 'package:get/get.dart';

class OursAnnouncementDetailPage extends StatelessWidget {
const OursAnnouncementDetailPage({Key? key, required this.announcementData})
: super(key: key);

final OursAnnouncementEntity announcementData;

@override
Widget build(BuildContext context) {
return Container(
child: Scaffold(
appBar: AppBar(
backgroundColor: OursColorMainRed,
shadowColor: OursColorStandOutRed,
),
body: Container(
height: double.infinity,
width: double.infinity,
color: OursColorBrightGray,
child: ListView(children: [
Container(
child: Padding(
padding: const EdgeInsets.all(28),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
announcementData.title,
style: TextStyle(
fontSize: 24,
fontFamily: "SourceHanSerif",
fontWeight: FontWeight.w800),
),
SizedBox(
height: 16,
),
Text(
announcementData.author,
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.bold,
color: Colors.grey),
),
SizedBox(
height: 5,
),
Text(
announcementData.content,
style: TextStyle(
fontSize: 16,
fontFamily: "SourceHanSerif",
fontWeight: FontWeight.w600,
decoration: TextDecoration.none),
),
],
),
),
),
]),
),
),
);
}
}
Empty file.
11 changes: 11 additions & 0 deletions lib/pages/OursAnnouncementPage/bindings.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import 'package:get/get.dart';

import 'controller.dart';

class OursAnnouncementBinding implements Bindings {
@override
void dependencies() {
Get.lazyPut<OursAnnouncementPagecontroller>(
() => OursAnnouncementPagecontroller());
}
}
46 changes: 46 additions & 0 deletions lib/pages/OursAnnouncementPage/controller.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import 'package:get/get.dart';
import 'package:ours_next/common/apis/OursApis.dart';

import 'index.dart';

class OursAnnouncementPagecontroller extends GetxController {
OursAnnouncementPagecontroller();

final state = OursAnnouncementPageState();

// 下拉刷新
Future<void> onRefresh() async {
await asyncLoadAllData();
}

// 拉取数据
asyncLoadAllData() async {
state.announcementlist = await OursAnnouncementAPI.getOursAnnouncementList()
.then((value) => value.items);
}

/// 在 widget 内存中分配后立即调用。
@override
void onInit() {
super.onInit();
}

/// 在 onInit() 之后调用 1 帧。这是进入的理想场所
@override
void onReady() {
super.onReady();
asyncLoadAllData();
}

/// 在 [onDelete] 方法之前调用。
@override
void onClose() {
super.onClose();
}

/// dispose 释放内存
@override
void dispose() {
super.dispose();
}
}
6 changes: 6 additions & 0 deletions lib/pages/OursAnnouncementPage/index.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
library announcement;

export './state.dart';
export './controller.dart';
export './bindings.dart';
export './view.dart';
11 changes: 11 additions & 0 deletions lib/pages/OursAnnouncementPage/state.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:ours_next/data/OursAnnouncementEntity.dart';
import 'package:ours_next/widgets/announcement/OursAnnouncementCardWidget.dart';

class OursAnnouncementPageState {
// 通知列表
var _announcementlist = Rx<List<OursAnnouncementEntity>?>(null);
set announcementlist(value) => _announcementlist.value = value;
get announcementlist => _announcementlist.value;
}
51 changes: 51 additions & 0 deletions lib/pages/OursAnnouncementPage/view.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:ours_next/OursTheme.dart';
import 'package:ours_next/data/OursAnnouncementEntity.dart';
import 'package:ours_next/pages/OursAnnouncementPage/widgets/OursAnnouncementPageAnnouncementList.dart';
import 'package:ours_next/widgets/OursAppBar.dart';
import 'package:ours_next/widgets/OursCardWidget.dart';
import 'package:ours_next/widgets/announcement/OursAnnouncementCardWidget.dart';

import 'index.dart';

class OursAnnouncementPage extends GetView<OursAnnouncementPagecontroller> {
const OursAnnouncementPage({Key? key}) : super(key: key);

@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
//最外层包裹Container
decoration: BoxDecoration(color: Color(0xFFBE4749)),
child: SafeArea(
//SafeArea保证在安全区域内渲染(防止刘海屏之类遮挡)
bottom: true,
child: Container(
decoration: BoxDecoration(color: Color(0xffeeeeee)), //白色背景
child: Column(children: [
OursAppBar(),
Expanded(
//body部分
//占满剩余空间
child: ScrollConfiguration(
behavior: ScrollBehavior(),
child: GlowingOverscrollIndicator(
color: OursColorRedShadow,
axisDirection: AxisDirection.down,
child: RefreshIndicator(
color: OursColorMainRed,
onRefresh: controller.onRefresh,
strokeWidth: 2.7,
child: ListView(
children: [
OursAnnouncementPageAnnouncementList(),
SizedBox(
height: 200,
)
],
)))))
]),
))));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:ours_next/pages/OursAnnouncementPage/controller.dart';
import 'package:ours_next/widgets/announcement/OursAnnouncementCardWidget.dart';

class OursAnnouncementPageAnnouncementList
extends GetView<OursAnnouncementPagecontroller> {
OursAnnouncementPageAnnouncementList();

@override
Widget build(BuildContext context) {
return Obx(() => controller.state.announcementlist == null
? Container()
: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: controller.state.announcementlist.map<Widget>((item) {
return OursAnnouncementCardWidget(
announcementdata: item,
);
}).toList()));
}
}
2 changes: 1 addition & 1 deletion lib/pages/OursMainPage/widgets/OursMainPagePostsList.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:ours_next/pages/OursMainPage/controller.dart';
import 'package:ours_next/widgets/post/OursPostCardWidget.dart';
import 'package:ours_next/pages/OursMainPage/controller.dart';

class OursMainPagePostsList extends GetView<OursMainPageController> {
OursMainPagePostsList();
Expand Down
Loading