Commit ea808210 authored by 林生雨's avatar 林生雨

commit

parent 23ce2864
...@@ -21,5 +21,14 @@ ...@@ -21,5 +21,14 @@
android:value="true" /> android:value="true" />
</activity> </activity>
<activity android:name=".Temp"/> <activity android:name=".Temp"/>
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.example.gmalpha_flutter"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
</application> </application>
</manifest> </manifest>
...@@ -64,6 +64,7 @@ class MainActivity : FlutterActivity() { ...@@ -64,6 +64,7 @@ class MainActivity : FlutterActivity() {
} else if (call.method == "INIT_PARAMS") { } else if (call.method == "INIT_PARAMS") {
val map = HashMap<String, String>() val map = HashMap<String, String>()
map.put("buildConfig", "debug") map.put("buildConfig", "debug")
map.put("provider","com.example.gmalpha_flutter")
//HERE //HERE
// map.put("proxy", "172.30.9.84:6666"); // map.put("proxy", "172.30.9.84:6666");
result.success(map) result.success(map)
......
<?xml version="1.0" encoding="utf-8"?>
<paths>
<!--path:需要临时授权访问的路径(.代表所有路径)-->
<!--name:就是你给这个访问路径起个名字-->
<external-path name="InstructiveRide" path="."/>
</paths>
\ No newline at end of file
...@@ -65,7 +65,7 @@ ...@@ -65,7 +65,7 @@
[dict setObject:@"sessionid=9odo0sov71x66ke9dlphibnq9i9gduxj;_gtid=3fbe9b78d2cb11e98bc1525400e82fab5270; _gm_token=db88861568285036" forKey:@"cookie"]; [dict setObject:@"sessionid=9odo0sov71x66ke9dlphibnq9i9gduxj;_gtid=3fbe9b78d2cb11e98bc1525400e82fab5270; _gm_token=db88861568285036" forKey:@"cookie"];
[dict setObject:@"debug" forKey:@"buildConfig"]; [dict setObject:@"debug" forKey:@"buildConfig"];
//HERE //HERE
[dict setObject:@"172.30.9.84:6666" forKey:@"proxy"]; // [dict setObject:@"172.30.9.84:6666" forKey:@"proxy"];
result(dict); result(dict);
} }
}]; }];
......
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gmalpha_flutter/ActivityReportModel/service/ActivityReportRepository.dart'; import 'package:gmalpha_flutter/ActivityReportModel/service/ActivityReportRepository.dart';
import 'package:gmalpha_flutter/ActivityReportModel/service/remote/entity/ActivityReportEntity.dart'; import 'package:gmalpha_flutter/ActivityReportModel/service/remote/entity/ActivityReportEntity.dart';
import 'package:gmalpha_flutter/commonModel/base/Temp.dart';
import 'package:gmalpha_flutter/commonModel/live/BaseModel.dart'; import 'package:gmalpha_flutter/commonModel/live/BaseModel.dart';
import 'package:gmalpha_flutter/commonModel/live/LiveData.dart'; import 'package:gmalpha_flutter/commonModel/live/LiveData.dart';
import 'package:gmalpha_flutter/commonModel/net/DioUtil.dart'; import 'package:gmalpha_flutter/commonModel/net/DioUtil.dart';
......
...@@ -10,10 +10,8 @@ import 'package:gmalpha_flutter/ActivityReportModel/service/remote/entity/Activi ...@@ -10,10 +10,8 @@ import 'package:gmalpha_flutter/ActivityReportModel/service/remote/entity/Activi
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gmalpha_flutter/ActivityReportModel/page/ActivityReportModel.dart'; import 'package:gmalpha_flutter/ActivityReportModel/page/ActivityReportModel.dart';
import 'package:gmalpha_flutter/Annotations/RouterCenterRestore.mark.dart'; import 'package:gmalpha_flutter/Annotations/RouterCenterRestore.mark.dart';
import 'package:gmalpha_flutter/commonModel/base/BaseComponent.dart'; import 'package:gmalpha_flutter/commonModel/GMBase.dart';
import 'package:gmalpha_flutter/commonModel/base/BasePage.dart'; import 'package:gmalpha_flutter/res/GMRes.dart';
import 'package:gmalpha_flutter/commonModel/base/Temp.dart';
import 'package:gmalpha_flutter/commonModel/ui/ALColors.dart';
final _goldenColor = Color(0xFFB9A689); final _goldenColor = Color(0xFFB9A689);
ActivityReportState state; ActivityReportState state;
...@@ -243,7 +241,8 @@ class TopCard extends StatelessWidget { ...@@ -243,7 +241,8 @@ class TopCard extends StatelessWidget {
SizedBox( SizedBox(
height: ScreenUtil.instance.setHeight(8.5), height: ScreenUtil.instance.setHeight(8.5),
child: Container( child: Container(
margin: EdgeInsets.only(top: ScreenUtil.instance.setHeight(.5)), margin:
EdgeInsets.only(top: ScreenUtil.instance.setHeight(.5)),
color: ALColors.Color323232, color: ALColors.Color323232,
), ),
), ),
...@@ -412,8 +411,8 @@ class PictorialCard extends StatelessWidget { ...@@ -412,8 +411,8 @@ class PictorialCard extends StatelessWidget {
children: <Widget>[ children: <Widget>[
Container( Container(
width: ScreenUtil.instance.setWidth(343), width: ScreenUtil.instance.setWidth(343),
padding: padding: EdgeInsets.only(
EdgeInsets.only(bottom: ScreenUtil.instance.setHeight(11.0)), bottom: ScreenUtil.instance.setHeight(11.0)),
child: Wrap(spacing: 6, children: list), child: Wrap(spacing: 6, children: list),
), ),
Container( Container(
...@@ -574,7 +573,8 @@ class AnimationCharacterState extends State<AnimationCharacter> ...@@ -574,7 +573,8 @@ class AnimationCharacterState extends State<AnimationCharacter>
if (percent < frist) { if (percent < frist) {
double tempPercent = percent / frist; double tempPercent = percent / frist;
nowValue = (target * tempPercent).ceil(); nowValue = (target * tempPercent).ceil();
margin = ScreenUtil.instance.setWidth(10.0 + (25.8 * nowValue).ceil()); margin =
ScreenUtil.instance.setWidth(10.0 + (25.8 * nowValue).ceil());
if (index != nowValue) { if (index != nowValue) {
item['url'] = 'images/dark_grey_person.png'; item['url'] = 'images/dark_grey_person.png';
} else { } else {
......
...@@ -179,7 +179,7 @@ class AlbumModel extends BaseModel { ...@@ -179,7 +179,7 @@ class AlbumModel extends BaseModel {
void onNext(BuildContext context) { void onNext(BuildContext context) {
if (_selectList.isEmpty) { if (_selectList.isEmpty) {
Navigator.pop(context, ""); Navigator.pop(context, null);
} else { } else {
Navigator.pop(context, _selectList); Navigator.pop(context, _selectList);
} }
......
...@@ -38,7 +38,7 @@ class AlbumState extends State<AlbumPage> { ...@@ -38,7 +38,7 @@ class AlbumState extends State<AlbumPage> {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
leading: GestureDetector( leading: GestureDetector(
onTap: () => Navigator.pop(context, ""), onTap: () => Navigator.pop(context, null),
child: Center( child: Center(
child: Container( child: Container(
padding: EdgeInsets.fromLTRB(16, 0, 0, 0), padding: EdgeInsets.fromLTRB(16, 0, 0, 0),
...@@ -108,7 +108,6 @@ class AlbumState extends State<AlbumPage> { ...@@ -108,7 +108,6 @@ class AlbumState extends State<AlbumPage> {
void dispose() { void dispose() {
super.dispose(); super.dispose();
_model.dispose(); _model.dispose();
} }
mainView() { mainView() {
......
/*
* @author lsy
* @date 2019-09-09
**/
\ No newline at end of file
...@@ -3,10 +3,7 @@ ...@@ -3,10 +3,7 @@
* @date 2019-09-30 * @date 2019-09-30
**/ **/
import 'package:gmalpha_flutter/BuriedLib/buried/SendTask.dart'; import 'package:gmalpha_flutter/BuriedLib/buried/SendTask.dart';
import 'package:gmalpha_flutter/BuriedLib/buried/constant/Constant.dart';
import 'package:gmalpha_flutter/BuriedLib/proto/burying.pbgrpc.dart'; import 'package:gmalpha_flutter/BuriedLib/proto/burying.pbgrpc.dart';
import 'package:gmalpha_flutter/commonModel/app_module.dart';
import 'package:gmalpha_flutter/commonModel/cache/CacheManager.dart';
const BURIED_TAG = "BURIED"; const BURIED_TAG = "BURIED";
......
...@@ -4,8 +4,7 @@ ...@@ -4,8 +4,7 @@
**/ **/
import 'package:gmalpha_flutter/BuriedLib/buried/constant/Constant.dart'; import 'package:gmalpha_flutter/BuriedLib/buried/constant/Constant.dart';
import 'package:gmalpha_flutter/BuriedLib/proto/burying.pbgrpc.dart'; import 'package:gmalpha_flutter/BuriedLib/proto/burying.pbgrpc.dart';
import 'package:gmalpha_flutter/commonModel/app_module.dart'; import 'package:gmalpha_flutter/commonModel/GMBase.dart';
import 'package:gmalpha_flutter/commonModel/base/Temp.dart';
import 'package:gmalpha_flutter/commonModel/cache/CacheManager.dart'; import 'package:gmalpha_flutter/commonModel/cache/CacheManager.dart';
import 'package:gmalpha_flutter/commonModel/net/Api.dart'; import 'package:gmalpha_flutter/commonModel/net/Api.dart';
import 'package:grpc/grpc.dart'; import 'package:grpc/grpc.dart';
......
...@@ -5,10 +5,8 @@ ...@@ -5,10 +5,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gmalpha_flutter/PrestigeModel/service/PrestigeRepository.dart'; import 'package:gmalpha_flutter/PrestigeModel/service/PrestigeRepository.dart';
import 'package:gmalpha_flutter/PrestigeModel/service/remote/entity/PrestigeEntity.dart'; import 'package:gmalpha_flutter/PrestigeModel/service/remote/entity/PrestigeEntity.dart';
import 'package:gmalpha_flutter/commonModel/base/Temp.dart';
import 'package:gmalpha_flutter/commonModel/live/BaseModel.dart'; import 'package:gmalpha_flutter/commonModel/live/BaseModel.dart';
import 'package:gmalpha_flutter/commonModel/live/LiveData.dart'; import 'package:gmalpha_flutter/commonModel/live/LiveData.dart';
import 'package:gmalpha_flutter/commonModel/net/DioUtil.dart';
import 'package:gmalpha_flutter/commonModel/toast/toast.dart'; import 'package:gmalpha_flutter/commonModel/toast/toast.dart';
class ReputationsModel extends BaseModel { class ReputationsModel extends BaseModel {
......
...@@ -5,9 +5,9 @@ ...@@ -5,9 +5,9 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gmalpha_flutter/Annotations/RouterCenterRestore.mark.dart'; import 'package:gmalpha_flutter/Annotations/RouterCenterRestore.mark.dart';
import 'package:gmalpha_flutter/commonModel/base/BaseComponent.dart';
import 'package:gmalpha_flutter/commonModel/net/Api.dart'; import 'package:gmalpha_flutter/commonModel/net/Api.dart';
import 'package:gmalpha_flutter/res/anim/Anim.dart'; import 'package:gmalpha_flutter/res/anim/Anim.dart';
import 'commonModel/GMBase.dart';
class TestPage extends StatelessWidget { class TestPage extends StatelessWidget {
TestPage() { TestPage() {
......
/*
* @author lsy
* @date 2019-10-15
**/
library GMBase;
export 'base/AppBase.dart';
export 'base/BaseBuried.dart';
export 'base/BaseComponent.dart';
export 'base/BasePage.dart';
export 'base/BaseUtil.dart';
export 'live/BaseModel.dart';
export 'live/LiveData.dart';
export 'net/Api.dart';
export 'net/DioUtil.dart';
export 'net/Responce/SimpleResponce.dart';
export 'net/ALNetWork.dart';
import 'package:gmalpha_flutter/commonModel/base/Temp.dart';
import 'package:gmalpha_flutter/commonModel/sp/SpUtil.dart';
SpUtil spUtil=SpUtil.getInstance() as SpUtil;
...@@ -7,7 +7,10 @@ import 'package:flutter/material.dart'; ...@@ -7,7 +7,10 @@ import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
AppBar baseAppBar( AppBar baseAppBar(
{String title, List<Widget> action, bool centerTitle, VoidCallback backClick}) { {String title,
List<Widget> action,
bool centerTitle,
VoidCallback backClick}) {
return AppBar( return AppBar(
title: title == null ? Container() : baseText(title, 16, 0xff323232), title: title == null ? Container() : baseText(title, 16, 0xff323232),
centerTitle: centerTitle, centerTitle: centerTitle,
...@@ -29,3 +32,16 @@ Text baseText(String text, double fontSize, int color) { ...@@ -29,3 +32,16 @@ Text baseText(String text, double fontSize, int color) {
style: TextStyle(fontSize: fontSize, color: Color(color)), style: TextStyle(fontSize: fontSize, color: Color(color)),
); );
} }
Widget loadingItem() {
//TODO
return Center(child: CircularProgressIndicator());
}
Widget netErrorItem(){
}
//TODO
...@@ -5,8 +5,6 @@ ...@@ -5,8 +5,6 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gmalpha_flutter/Annotations/RouterCenterRestore.mark.dart'; import 'package:gmalpha_flutter/Annotations/RouterCenterRestore.mark.dart';
import 'package:gmalpha_flutter/commonModel/base/Temp.dart';
import 'package:gmalpha_flutter/commonModel/cache/CacheManager.dart';
abstract class BasePage<T extends StatefulWidget> extends State<T> { abstract class BasePage<T extends StatefulWidget> extends State<T> {
var startTime; var startTime;
......
/*
* @author lsy
* @date 2019-09-24
**/
import 'package:flutter/material.dart';
abstract class BaseState<T extends StatefulWidget> extends State<T>{
@override
void initState() {
super.initState();
}
@override
void dispose() {
super.dispose();
}
}
\ No newline at end of file
...@@ -3,8 +3,14 @@ ...@@ -3,8 +3,14 @@
* @date 2019-10-14 * @date 2019-10-14
**/ **/
import 'dart:ui';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
double screenWidth = window.physicalSize.width;
double screenHeight = window.physicalSize.height;
void jumpToPage(Widget page, BuildContext context) { void jumpToPage(Widget page, BuildContext context) {
Navigator.push(context, MaterialPageRoute(builder: ((context) { Navigator.push(context, MaterialPageRoute(builder: ((context) {
return page; return page;
......
/*
* @author lsy
* @date 2019-09-30
**/
import 'package:flutter/services.dart';
const platform = const MethodChannel('gengmei_flutter_native_channel');
class NativeChannel {
static void getNativeArguements() {
platform.invokeMethod("get_native_data").then((value) {
print("VALUE=-=");
});
}
}
...@@ -24,6 +24,7 @@ const String APP_HOST_DEV = "http://earth.alpha.newdev"; ...@@ -24,6 +24,7 @@ const String APP_HOST_DEV = "http://earth.alpha.newdev";
class Api { class Api {
static String BUILD_CONFIG; static String BUILD_CONFIG;
static String PROVIDER_NAME;
static Api intance = new Api._(); static Api intance = new Api._();
...@@ -42,6 +43,7 @@ class Api { ...@@ -42,6 +43,7 @@ class Api {
return false; return false;
} }
BUILD_CONFIG = buildConfig; BUILD_CONFIG = buildConfig;
PROVIDER_NAME = params["provider"];
String baseUrl = getBaseUrl(buildConfig) + "/"; String baseUrl = getBaseUrl(buildConfig) + "/";
if (baseUrl == null) { if (baseUrl == null) {
return false; return false;
......
import 'package:flutter/services.dart';
// flutter 埋点方案
class PhobosFlutter {
static const MethodChannel _channel =
const MethodChannel('phobos_flutter_plugin');
///
/// track
/// 灰度信息
///
/// @param GreyType 事件名.
///
/// 使用示例:
/// PhobosFlutter.getGreyType();
///
static Future<String> get getGreyType async {
return await _channel.invokeMethod('getGreyType');
}
///当前API
static Future<String> get getServerAPI async {
return await _channel.invokeMethod('getServerAPI');
}
/// signingType 包的类型
static Future<String> get getSigningType async {
return await _channel.invokeMethod('getServerAPI');
}
/// userId
static Future<String> get getUserId async {
return await _channel.invokeMethod('getUserId');
}
///
/// track
/// 事件追踪
///
/// @param eventName String 事件名.
/// @param properties Map<String,dynamic> 事件属性.
///
/// 使用示例:
/// PhobosFlutter.track('eventname',{'key1':'value1','key2':'value2'});
///
static void track(String eventName ,Map<String, dynamic> properties ) {
assert(eventName != null);
List<dynamic> params = [eventName,properties];
_channel.invokeMethod('track',params);
}
static void trackSendNow(String eventName ,Map<String, dynamic> properties ) {
assert(eventName != null);
List<dynamic> params = [eventName,properties];
_channel.invokeMethod('track',params);
}
}
\ No newline at end of file
//
// ALCommon
//
// gmalpha_flutter
// Created by lxrent on 2019/2/19.
// Copyright © 2019 Gengmei. All rights reserved.
//
import 'package:flutter/material.dart';
import 'ALColors.dart';
class ALAlphaButton extends FlatButton {
// factory ALAlphaButton
/// Create a simple text button.
const ALAlphaButton({
Key key,
@required VoidCallback onPressed,
ValueChanged<bool> onHighlightChanged,
ButtonTextTheme textTheme,
Color textColor,
Color disabledTextColor,
Color color,
Color disabledColor,
Color highlightColor,
Color splashColor,
double minWidth,
Brightness colorBrightness,
EdgeInsetsGeometry padding,
ShapeBorder shape,
Clip clipBehavior = Clip.none,
MaterialTapTargetSize materialTapTargetSize,
@required Widget child,
}) : super(
key: key,
onPressed: onPressed,
onHighlightChanged: onHighlightChanged,
textTheme: textTheme,
textColor: textColor,
disabledTextColor: disabledTextColor,
color: color,
disabledColor: disabledColor,
highlightColor: highlightColor,
splashColor: splashColor,
colorBrightness: colorBrightness,
padding: padding,
shape: shape,
clipBehavior: clipBehavior,
materialTapTargetSize: materialTapTargetSize,
child: child,
);
@override
Widget build(BuildContext context) {
// TODO: implement build
return FlatButton(
textTheme:textTheme,
padding: padding,
child: child,
onPressed: onPressed,
textColor: ALColors.Color323232,
highlightColor:ALColors.Color323232,
color: ALColors.ColorFFFFFF,
shape: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(0)),
borderSide: BorderSide(color: ALColors.Color323232)),
);
}
}
//
// ALDevice
//
// gm_alpha_flutter
// Created by lxrent on 2019/1/30.
// Copyright © 2019 Gengmei. All rights reserved.
//
import 'dart:ui';
class ALDevice {
ALDevice._();
static bool debug = !const bool.fromEnvironment("dart.vm.product");
static double width = window.physicalSize.width;
static double height = window.physicalSize.height;
}
\ No newline at end of file
...@@ -6,12 +6,11 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; ...@@ -6,12 +6,11 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:gmalpha_flutter/Annotations/RouterCenterRestore.mark.dart'; import 'package:gmalpha_flutter/Annotations/RouterCenterRestore.mark.dart';
import 'package:gmalpha_flutter/Error_Page.dart'; import 'package:gmalpha_flutter/Error_Page.dart';
import 'package:gmalpha_flutter/TestPage.dart'; import 'package:gmalpha_flutter/TestPage.dart';
import 'package:gmalpha_flutter/commonModel/app_module.dart';
import 'package:gmalpha_flutter/commonModel/base/Temp.dart';
import 'package:gmalpha_flutter/commonModel/cache/CacheManager.dart'; import 'package:gmalpha_flutter/commonModel/cache/CacheManager.dart';
import 'package:gmalpha_flutter/commonModel/net/Api.dart'; import 'package:gmalpha_flutter/commonModel/net/Api.dart';
import 'package:gmalpha_flutter/messageModel/home/message_home.dart'; import 'package:gmalpha_flutter/messageModel/home/message_home.dart';
import 'commonModel/GMBase.dart';
void main() { void main() {
initParams(() => runApp(MyApp())); initParams(() => runApp(MyApp()));
...@@ -106,5 +105,3 @@ class _MyAppState extends State<MyApp> { ...@@ -106,5 +105,3 @@ class _MyAppState extends State<MyApp> {
print("PUSHED $pageName"); print("PUSHED $pageName");
} }
} }
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gmalpha_flutter/commonModel/ui/ALColors.dart';
import 'package:gmalpha_flutter/messageModel/model/message/message.dart'; import 'package:gmalpha_flutter/messageModel/model/message/message.dart';
import 'package:gmalpha_flutter/res/value/ALColors.dart';
class MessageNotificationItem extends StatelessWidget { class MessageNotificationItem extends StatelessWidget {
final NotificationItem notification; final NotificationItem notification;
......
/*
* @author lsy
* @date 2019-10-15
**/
library GMRes;
export 'anim/Anim.dart';
export 'value/ALColors.dart';
export 'value/ALFont.dart';
...@@ -11,7 +11,7 @@ class CustomRoute extends PageRouteBuilder{ ...@@ -11,7 +11,7 @@ class CustomRoute extends PageRouteBuilder{
CustomRoute(this.widget) CustomRoute(this.widget)
:super( :super(
// 设置过度时间 // 设置过度时间
transitionDuration:Duration(milliseconds: 500), transitionDuration:Duration(milliseconds: 200),
// 构造器 // 构造器
pageBuilder:( pageBuilder:(
// 上下文和动画 // 上下文和动画
......
/*
* @author lsy
* @date 2019-10-15
**/
const ST_SELECT_COUNTRY = "选择国家";
/*
* @author lsy
* @date 2019-09-04
**/
\ No newline at end of file
...@@ -11,10 +11,9 @@ import 'package:flutter_boost/flutter_boost.dart'; ...@@ -11,10 +11,9 @@ import 'package:flutter_boost/flutter_boost.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gmalpha_flutter/commonModel/base/BaseComponent.dart'; import 'package:gmalpha_flutter/commonModel/base/BaseComponent.dart';
import 'package:gmalpha_flutter/commonModel/base/BasePage.dart'; import 'package:gmalpha_flutter/commonModel/base/BasePage.dart';
import 'package:gmalpha_flutter/commonModel/base/BaseState.dart'; import 'package:gmalpha_flutter/commonModel/base/BaseUtil.dart';
import 'package:gmalpha_flutter/res/value/ALColors.dart';
import 'package:gmalpha_flutter/userModel/page/comment/CommentModel.dart'; import 'package:gmalpha_flutter/userModel/page/comment/CommentModel.dart';
import '../../../commonModel/ui/ALColors.dart';
import '../../../commonModel/ui/ALDevice.dart';
class CommentSuggestPage extends StatefulWidget { class CommentSuggestPage extends StatefulWidget {
var _model; var _model;
...@@ -105,7 +104,7 @@ class _CommentSuggestPageState extends BasePage<CommentSuggestPage> { ...@@ -105,7 +104,7 @@ class _CommentSuggestPageState extends BasePage<CommentSuggestPage> {
left: 30, right: 30, bottom: 30, top: 180), left: 30, right: 30, bottom: 30, top: 180),
// padding: EdgeInsets.all(0), // padding: EdgeInsets.all(0),
constraints: constraints:
BoxConstraints(minWidth: ALDevice.width, minHeight: 45), BoxConstraints(minWidth: screenWidth, minHeight: 45),
child: FlatButton( child: FlatButton(
onPressed: () { onPressed: () {
_model.confirmClick( _model.confirmClick(
......
/*
* @author lsy
* @date 2019-10-15
**/
import 'package:flutter/cupertino.dart';
import 'package:gmalpha_flutter/commonModel/GMBase.dart';
import 'package:gmalpha_flutter/commonModel/toast/toast.dart';
import 'package:gmalpha_flutter/userModel/service/UserRepository.dart';
import 'package:gmalpha_flutter/userModel/service/remote/entity/CountryBean.dart';
class CountryModel extends BaseModel {
LiveData<CountryBean> liveData = new LiveData();
final String refer;
String selectCity;
CountryModel(this.refer);
getCountries(BuildContext context) {
UserRepository.getInstance().getCountries().listen((value) {
liveData.notifyView(value);
}).onError((error) {
Toast.debugShow(context, error);
print(error);
});
}
@override
void dispose() {
liveData.dispost();
}
}
/*
* @author lsy
* @date 2019-10-15
**/
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:gmalpha_flutter/commonModel/base/BaseComponent.dart';
import 'package:gmalpha_flutter/commonModel/base/BasePage.dart';
import 'package:gmalpha_flutter/res/GMRes.dart';
import 'package:gmalpha_flutter/userModel/page/country/CountryModel.dart';
import 'package:gmalpha_flutter/userModel/service/remote/entity/CountryBean.dart';
class CountryPage extends StatefulWidget {
CountryModel _model;
CountryPage(String refer) {
_model = new CountryModel(refer);
}
@override
State<StatefulWidget> createState() => CountryState(_model);
}
class CountryState extends BasePage {
CountryModel _model;
CountryState(this._model);
ScrollController _scrollController = new ScrollController();
@override
void initState() {
super.initState();
_model.getCountries(context);
_scrollController.addListener(() {
print(
"lsyy ${_scrollController.positions} OFF ${_scrollController.offset}");
});
}
@override
Widget build(BuildContext context) {
ScreenUtil.instance = ScreenUtil(width: 375, height: 667)..init(context);
return Scaffold(
appBar: baseAppBar(
centerTitle: true,
title: "选择国家",
backClick: () {
Navigator.pop(context, _model.selectCity);
}),
body: StreamBuilder<CountryBean>(
stream: _model.liveData.stream,
initialData: _model.liveData.data,
builder: (con, data) {
if (data.data == null) {
return loadingItem();
} else {
return ListView.builder(
controller: _scrollController,
itemCount: data.data?.data?.length,
itemBuilder: (con, index) {
List<Widget> list = [];
list.add(headItem(data.data.data[index].title));
for (int i = 0;
i < data.data.data[index].countries.length;
i++) {
Countries countriy = data.data.data[index].countries[i];
list.add(countryItem(countriy));
}
return Column(
children: list,
);
});
}
},
),
);
}
headItem(String head) {
return Container(
color: Color(0x22000000),
alignment: Alignment.centerLeft,
height: ScreenUtil.instance.setHeight(25),
padding: EdgeInsets.only(
left: ScreenUtil.instance.setWidth(12),
),
child: baseText(head, 15, 0xFF323232),
);
}
countryItem(Countries country) {
return GestureDetector(
onTap: () {
Navigator.pop(context, country.name);
},
child: Container(
alignment: Alignment.centerLeft,
height: ScreenUtil.instance.setHeight(50),
margin: EdgeInsets.only(
left: ScreenUtil.instance.setWidth(12),
),
child: baseText(country.name, 15, 0xFF323232),
));
}
@override
String pageName() {
// TODO: implement pageName
return null;
}
@override
String referrer() {
// TODO: implement referrer
return null;
}
}
...@@ -8,11 +8,13 @@ import 'package:flutter/material.dart'; ...@@ -8,11 +8,13 @@ import 'package:flutter/material.dart';
import 'package:gmalpha_flutter/Annotations/RouterCenterRestore.mark.dart'; import 'package:gmalpha_flutter/Annotations/RouterCenterRestore.mark.dart';
import 'package:gmalpha_flutter/commonModel/base/BaseUtil.dart'; import 'package:gmalpha_flutter/commonModel/base/BaseUtil.dart';
import 'package:gmalpha_flutter/commonModel/live/BaseModel.dart'; import 'package:gmalpha_flutter/commonModel/live/BaseModel.dart';
import 'package:gmalpha_flutter/commonModel/net/Api.dart';
import 'package:gmalpha_flutter/commonModel/net/Responce/SimpleResponce.dart'; import 'package:gmalpha_flutter/commonModel/net/Responce/SimpleResponce.dart';
import 'package:gmalpha_flutter/commonModel/toast/toast.dart'; import 'package:gmalpha_flutter/commonModel/toast/toast.dart';
import 'package:gmalpha_flutter/userModel/service/UserRepository.dart'; import 'package:gmalpha_flutter/userModel/service/UserRepository.dart';
import 'package:gmalpha_flutter/userModel/service/remote/entity/UserEntity.user.dart'; import 'package:gmalpha_flutter/userModel/service/remote/entity/UserEntity.user.dart';
import 'package:gmalpha_flutter/userModel/service/remote/entity/UserResultBean.dart'; import 'package:gmalpha_flutter/userModel/service/remote/entity/UserResultBean.dart';
import 'package:gmalpha_flutter/userModel/util/JumpUtil.dart';
import '../../../commonModel/live/LiveData.dart'; import '../../../commonModel/live/LiveData.dart';
...@@ -24,6 +26,7 @@ class UserSettingModel extends BaseModel { ...@@ -24,6 +26,7 @@ class UserSettingModel extends BaseModel {
final String userid; final String userid;
final String refere; final String refere;
String selectImgPath, defultName, defultCity;
UserSettingModel(this.userid, this.refere); UserSettingModel(this.userid, this.refere);
...@@ -36,6 +39,8 @@ class UserSettingModel extends BaseModel { ...@@ -36,6 +39,8 @@ class UserSettingModel extends BaseModel {
nameLive.notifyView(data?.data?.nickName); nameLive.notifyView(data?.data?.nickName);
cityLive.notifyView(data?.data?.countryInfo?.name); cityLive.notifyView(data?.data?.countryInfo?.name);
headImgLive.notifyView(data?.data?.profilePic); headImgLive.notifyView(data?.data?.profilePic);
defultName = data?.data?.nickName;
defultCity = data?.data?.countryInfo?.name;
}).onError((error) { }).onError((error) {
print(error); print(error);
Toast.show(context, error); Toast.show(context, error);
...@@ -43,6 +48,7 @@ class UserSettingModel extends BaseModel { ...@@ -43,6 +48,7 @@ class UserSettingModel extends BaseModel {
} else { } else {
UserEntityImpl().getnickName().listen((data) { UserEntityImpl().getnickName().listen((data) {
print("NICK $data"); print("NICK $data");
defultName = data;
nameLive.notifyView(data); nameLive.notifyView(data);
}).onError((error) { }).onError((error) {
print(error); print(error);
...@@ -50,6 +56,7 @@ class UserSettingModel extends BaseModel { ...@@ -50,6 +56,7 @@ class UserSettingModel extends BaseModel {
}); });
UserEntityImpl().getcountryInfoName().listen((data) { UserEntityImpl().getcountryInfoName().listen((data) {
print("con $data"); print("con $data");
defultCity = data;
cityLive.notifyView(data); cityLive.notifyView(data);
}).onError((error) { }).onError((error) {
print(error); print(error);
...@@ -66,6 +73,16 @@ class UserSettingModel extends BaseModel { ...@@ -66,6 +73,16 @@ class UserSettingModel extends BaseModel {
}); });
} }
void detectUpdate() {
if (defultName != nameLive.data ||
defultCity != cityLive.data ||
selectImgPath != null) {
saveLive.notifyView(true);
} else {
saveLive.notifyView(false);
}
}
@override @override
void dispose() { void dispose() {
nameLive.dispost(); nameLive.dispost();
...@@ -73,4 +90,30 @@ class UserSettingModel extends BaseModel { ...@@ -73,4 +90,30 @@ class UserSettingModel extends BaseModel {
cityLive.dispost(); cityLive.dispost();
saveLive.dispost(); saveLive.dispost();
} }
void jumpToCAM(BuildContext context) {
jumpToCamera(context, refere, Api.PROVIDER_NAME, true, 1, null)
.then((value) {
if (value != null) {
selectImgPath = value[0];
headImgLive.notifyView(selectImgPath);
detectUpdate();
}
}).catchError((error) {
Toast.debugShow(context, error);
print(error);
});
}
void jumpToCTY(BuildContext context, String pageName) {
jumpToCountry(context, pageName).then((value) {
if (value != null) {
cityLive.notifyView(value);
detectUpdate();
}
}).catchError((error) {
Toast.debugShow(context, error);
print(error);
});
}
} }
...@@ -3,10 +3,13 @@ ...@@ -3,10 +3,13 @@
* @date 2019-09-04 * @date 2019-09-04
**/ **/
import 'dart:io';
import 'package:cached_network_image/cached_network_image.dart'; import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:gmalpha_flutter/commonModel/GMBase.dart';
import 'package:gmalpha_flutter/commonModel/base/BaseBuried.dart'; import 'package:gmalpha_flutter/commonModel/base/BaseBuried.dart';
import 'package:gmalpha_flutter/commonModel/base/BaseComponent.dart'; import 'package:gmalpha_flutter/commonModel/base/BaseComponent.dart';
import 'package:gmalpha_flutter/commonModel/base/BasePage.dart'; import 'package:gmalpha_flutter/commonModel/base/BasePage.dart';
...@@ -90,14 +93,16 @@ class UserState extends BasePage<UserSettingPage> { ...@@ -90,14 +93,16 @@ class UserState extends BasePage<UserSettingPage> {
), ),
Container( Container(
width: ScreenUtil.instance.setWidth(127), width: ScreenUtil.instance.setWidth(127),
height: ScreenUtil.instance.setHeight(127), height: ScreenUtil.instance.setWidth(127),
margin: EdgeInsets.fromLTRB( margin: EdgeInsets.fromLTRB(
ScreenUtil.instance.setWidth(26), ScreenUtil.instance.setWidth(26),
ScreenUtil.instance.setWidth(23), ScreenUtil.instance.setWidth(23),
0, 0,
ScreenUtil.instance.setWidth(23)), ScreenUtil.instance.setWidth(23)),
child: GestureDetector( child: GestureDetector(
onTap: () {}, onTap: () {
_model.jumpToCAM(context);
},
child: Stack( child: Stack(
alignment: Alignment.bottomRight, alignment: Alignment.bottomRight,
children: <Widget>[ children: <Widget>[
...@@ -106,12 +111,25 @@ class UserState extends BasePage<UserSettingPage> { ...@@ -106,12 +111,25 @@ class UserState extends BasePage<UserSettingPage> {
initialData: _model.headImgLive.data, initialData: _model.headImgLive.data,
builder: (con, data) { builder: (con, data) {
if (data.data == null || data.data.isEmpty) { if (data.data == null || data.data.isEmpty) {
return SvgPicture.asset("images/replace_head.svg"); // return SvgPicture.asset("images/replace_head.svg");
return Container();
} else { } else {
return ClipOval( return Container(
child: CachedNetworkImage( alignment: Alignment.center,
imageUrl: data.data, width: ScreenUtil.instance.setWidth(127),
)); height: ScreenUtil.instance.setWidth(127),
child: ClipOval(
child: _model.selectImgPath == null
? CachedNetworkImage(
imageUrl: data.data,
)
: SizedBox(
height: double.maxFinite,
width: double.maxFinite,
child: Image.file(
File(data.data),
fit: BoxFit.cover,
))));
} }
}, },
), ),
...@@ -137,8 +155,9 @@ class UserState extends BasePage<UserSettingPage> { ...@@ -137,8 +155,9 @@ class UserState extends BasePage<UserSettingPage> {
), ),
false), false),
divideLine(), divideLine(),
baseItem( baseItem(() {
() {}, _model.jumpToCTY(context, pageName());
},
"国家", "国家",
StreamBuilder<String>( StreamBuilder<String>(
stream: _model.cityLive.stream, stream: _model.cityLive.stream,
...@@ -201,11 +220,12 @@ class UserState extends BasePage<UserSettingPage> { ...@@ -201,11 +220,12 @@ class UserState extends BasePage<UserSettingPage> {
right: ScreenUtil.instance.setWidth(30), right: ScreenUtil.instance.setWidth(30),
left: ScreenUtil.instance.setWidth(30)), left: ScreenUtil.instance.setWidth(30)),
height: 60, height: 60,
width: double.maxFinite,
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
baseText(left, 13, 0xff323232), baseText(left, 13, 0xff323232),
Expanded( Expanded(
child: SizedBox(), child: Text(""),
), ),
center ?? Container(), center ?? Container(),
needRight needRight
......
...@@ -6,6 +6,7 @@ import 'package:gmalpha_flutter/commonModel/net/Responce/SimpleResponce.dart'; ...@@ -6,6 +6,7 @@ import 'package:gmalpha_flutter/commonModel/net/Responce/SimpleResponce.dart';
import 'package:gmalpha_flutter/userModel/service/local/UserLocal.dart'; import 'package:gmalpha_flutter/userModel/service/local/UserLocal.dart';
import 'package:gmalpha_flutter/userModel/service/remote/UserRemote.dart'; import 'package:gmalpha_flutter/userModel/service/remote/UserRemote.dart';
import 'package:gmalpha_flutter/userModel/service/remote/entity/CommentBean.dart'; import 'package:gmalpha_flutter/userModel/service/remote/entity/CommentBean.dart';
import 'package:gmalpha_flutter/userModel/service/remote/entity/CountryBean.dart';
import 'package:gmalpha_flutter/userModel/service/remote/entity/TestUserEntity.dart'; import 'package:gmalpha_flutter/userModel/service/remote/entity/TestUserEntity.dart';
import 'package:gmalpha_flutter/userModel/service/remote/entity/UserEntity.dart'; import 'package:gmalpha_flutter/userModel/service/remote/entity/UserEntity.dart';
import 'package:gmalpha_flutter/userModel/service/remote/entity/UserEntity.user.dart'; import 'package:gmalpha_flutter/userModel/service/remote/entity/UserEntity.user.dart';
...@@ -42,4 +43,8 @@ class UserRepository { ...@@ -42,4 +43,8 @@ class UserRepository {
Observable<CommentBean> commentSuggest(String content, String phone) { Observable<CommentBean> commentSuggest(String content, String phone) {
return _remote.commentSuggest(content, phone); return _remote.commentSuggest(content, phone);
} }
Observable<CountryBean> getCountries() {
return _remote.getCountrise();
}
} }
...@@ -10,6 +10,8 @@ import 'package:gmalpha_flutter/userModel/service/remote/entity/UserEntity.dart' ...@@ -10,6 +10,8 @@ import 'package:gmalpha_flutter/userModel/service/remote/entity/UserEntity.dart'
import 'package:gmalpha_flutter/userModel/service/remote/entity/UserResultBean.dart'; import 'package:gmalpha_flutter/userModel/service/remote/entity/UserResultBean.dart';
import 'package:rxdart/rxdart.dart'; import 'package:rxdart/rxdart.dart';
import 'entity/CountryBean.dart';
class UserRemote { class UserRemote {
static UserRemote _userRemote; static UserRemote _userRemote;
...@@ -29,4 +31,8 @@ class UserRemote { ...@@ -29,4 +31,8 @@ class UserRemote {
Observable<CommentBean> commentSuggest(String content, String phone) { Observable<CommentBean> commentSuggest(String content, String phone) {
return UserApiImpl().comment(content, phone); return UserApiImpl().comment(content, phone);
} }
Observable<CountryBean> getCountrise() {
return UserApiImpl().getCountrys();
}
} }
...@@ -8,6 +8,7 @@ import 'package:gmalpha_flutter/Annotations/anno/Query.dart'; ...@@ -8,6 +8,7 @@ import 'package:gmalpha_flutter/Annotations/anno/Query.dart';
import 'package:gmalpha_flutter/Annotations/anno/ServiceCenter.dart'; import 'package:gmalpha_flutter/Annotations/anno/ServiceCenter.dart';
import 'package:gmalpha_flutter/commonModel/net/Responce/SimpleResponce.dart'; import 'package:gmalpha_flutter/commonModel/net/Responce/SimpleResponce.dart';
import 'package:gmalpha_flutter/userModel/service/remote/entity/CommentBean.dart'; import 'package:gmalpha_flutter/userModel/service/remote/entity/CommentBean.dart';
import 'package:gmalpha_flutter/userModel/service/remote/entity/CountryBean.dart';
import 'package:gmalpha_flutter/userModel/service/remote/entity/TestUserEntity.dart'; import 'package:gmalpha_flutter/userModel/service/remote/entity/TestUserEntity.dart';
import 'package:gmalpha_flutter/userModel/service/remote/entity/UserEntity.dart'; import 'package:gmalpha_flutter/userModel/service/remote/entity/UserEntity.dart';
import 'package:gmalpha_flutter/userModel/service/remote/entity/UserResultBean.dart'; import 'package:gmalpha_flutter/userModel/service/remote/entity/UserResultBean.dart';
...@@ -19,4 +20,7 @@ abstract class UserApi { ...@@ -19,4 +20,7 @@ abstract class UserApi {
@Post("api/v1/suggestion") @Post("api/v1/suggestion")
CommentBean comment(@Query("content") String content, @Query("phone") String phone); CommentBean comment(@Query("content") String content, @Query("phone") String phone);
@Get("api/v1/countries")
CountryBean getCountrys();
} }
...@@ -12,6 +12,7 @@ import 'package:rxdart/rxdart.dart'; ...@@ -12,6 +12,7 @@ import 'package:rxdart/rxdart.dart';
import 'package:gmalpha_flutter/userModel/service/remote/entity/UserResultBean.dart'; import 'package:gmalpha_flutter/userModel/service/remote/entity/UserResultBean.dart';
import 'package:gmalpha_flutter/userModel/service/remote/entity/CommentBean.dart'; import 'package:gmalpha_flutter/userModel/service/remote/entity/CommentBean.dart';
import 'package:gmalpha_flutter/userModel/service/remote/entity/CountryBean.dart';
import 'package:gmalpha_flutter/commonModel/net/DioUtil.dart'; import 'package:gmalpha_flutter/commonModel/net/DioUtil.dart';
...@@ -48,4 +49,14 @@ class UserApiImpl { ...@@ -48,4 +49,14 @@ class UserApiImpl {
} }
}); });
} }
Observable<CountryBean> getCountrys() {
return Observable.fromFuture(DioUtil().get('api/v1/countries'))
.map((value) {
if (value != null && value.statusCode == 200) {
Map map = json.decode(value.toString());
return CountryBean.fromJson(map);
}
});
}
} }
/*
* @author lsy
* @date 2019-10-15
**/
class CountryBean {
int error;
String message;
Null extra;
List<Data> data;
UserType userType;
CountryBean({this.error, this.message, this.extra, this.data, this.userType});
CountryBean.fromJson(Map<String, dynamic> json) {
error = json['error'];
message = json['message'];
extra = json['extra'];
if (json['data'] != null) {
data = new List<Data>();
json['data'].forEach((v) {
data.add(new Data.fromJson(v));
});
}
userType = json['user_type'] != null
? new UserType.fromJson(json['user_type'])
: null;
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['error'] = this.error;
data['message'] = this.message;
data['extra'] = this.extra;
if (this.data != null) {
data['data'] = this.data.map((v) => v.toJson()).toList();
}
if (this.userType != null) {
data['user_type'] = this.userType.toJson();
}
return data;
}
}
class Data {
String title;
List<Countries> countries;
Data({this.title, this.countries});
Data.fromJson(Map<String, dynamic> json) {
title = json['title'];
if (json['countries'] != null) {
countries = new List<Countries>();
json['countries'].forEach((v) {
countries.add(new Countries.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['title'] = this.title;
if (this.countries != null) {
data['countries'] = this.countries.map((v) => v.toJson()).toList();
}
return data;
}
}
class Countries {
String id;
String name;
String language;
Countries({this.id, this.name, this.language});
Countries.fromJson(Map<String, dynamic> json) {
id = json['id'];
name = json['name'];
language = json['language'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['name'] = this.name;
data['language'] = this.language;
return data;
}
}
class UserType {
UserType();
UserType.fromJson(Map<String, dynamic> json) {}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
return data;
}
}
...@@ -5,9 +5,23 @@ ...@@ -5,9 +5,23 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gmalpha_flutter/Annotations/RouterCenterRestore.mark.dart';
import 'package:gmalpha_flutter/res/anim/Anim.dart'; import 'package:gmalpha_flutter/res/anim/Anim.dart';
import 'package:gmalpha_flutter/userModel/page/comment/CommentSuggestPage.dart'; import 'package:gmalpha_flutter/userModel/page/comment/CommentSuggestPage.dart';
import 'package:gmalpha_flutter/userModel/page/country/CountryPage.dart';
void jumpToComment(BuildContext context, String refer) { void jumpToComment(BuildContext context, String refer) {
Navigator.push(context, new CustomRoute(CommentSuggestPage(refer))); Navigator.push(context, new CustomRoute(CommentSuggestPage(refer)));
} }
Future jumpToCamera(BuildContext context, String refer, String provider,
bool showCamera, int bigSelectImage, List<String> selectedImages) {
return Navigator.push(
context,
CustomRoute(RouterCenterImpl().findAlbumRouter()?.getAlbumPage(
provider, showCamera, bigSelectImage, selectedImages)));
}
Future jumpToCountry(BuildContext context, String refer) {
return Navigator.push(context, CustomRoute(CountryPage(refer)));
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment