add qrcode scan

add aku scaffold
add aku backbutton
add settings page
hmxc
小赖 4 years ago
parent 0ce81f09f6
commit 166d957f9d

@ -39,7 +39,7 @@ android {
defaultConfig { defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.akucommunity.aku_community_manager" applicationId "com.akucommunity.aku_community_manager"
minSdkVersion 16 minSdkVersion 24
targetSdkVersion 29 targetSdkVersion 29
versionCode flutterVersionCode.toInteger() versionCode flutterVersionCode.toInteger()
versionName flutterVersionName versionName flutterVersionName

@ -1 +1,2 @@
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "Generated.xcconfig" #include "Generated.xcconfig"

@ -1 +1,2 @@
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Generated.xcconfig" #include "Generated.xcconfig"

@ -0,0 +1,41 @@
# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
project 'Runner', {
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
}
def flutter_root
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
unless File.exist?(generated_xcode_build_settings_path)
raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end
File.foreach(generated_xcode_build_settings_path) do |line|
matches = line.match(/FLUTTER_ROOT\=(.*)/)
return matches[1].strip if matches
end
raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
flutter_ios_podfile_setup
target 'Runner' do
use_frameworks!
use_modular_headers!
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
end
end

@ -1,5 +1,6 @@
import 'package:aku_community_manager/provider/user_provider.dart'; import 'package:aku_community_manager/provider/user_provider.dart';
import 'package:aku_community_manager/ui/home/home_page.dart'; import 'package:aku_community_manager/ui/home/home_page.dart';
import 'package:bot_toast/bot_toast.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -13,13 +14,16 @@ class MyApp extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MultiProvider( return MultiProvider(
providers:[ providers: [
ChangeNotifierProvider(create: (context)=>UserProvider()), ChangeNotifierProvider(create: (context) => UserProvider()),
], ],
child: GetMaterialApp( child: GetMaterialApp(
title: '小蜜蜂管家', title: '小蜜蜂管家',
home: HomePage(), home: HomePage(),
builder: BotToastInit(),
navigatorObservers: [
BotToastNavigatorObserver(),
],
), ),
); );
} }

@ -5,7 +5,9 @@ class AppStyle {
static const minorColor=Color(0xFFFFDF5D); static const minorColor=Color(0xFFFFDF5D);
// //
///
static const primaryTextColor=Color(0xFF333333); static const primaryTextColor=Color(0xFF333333);
///
static const minorTextColor=Color(0xFF999999); static const minorTextColor=Color(0xFF999999);
} }

@ -1,3 +1,4 @@
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
export 'package:flutter_screenutil/flutter_screenutil.dart';
double get statusBarHeight => ScreenUtil().statusBarHeight; double get statusBarHeight => ScreenUtil().statusBarHeight;

@ -3,6 +3,7 @@ import 'package:aku_community_manager/style/app_style.dart';
import 'package:aku_community_manager/tools/screen_tool.dart'; import 'package:aku_community_manager/tools/screen_tool.dart';
import 'package:aku_community_manager/tools/widget_tool.dart'; import 'package:aku_community_manager/tools/widget_tool.dart';
import 'package:aku_community_manager/ui/home/personal_draw.dart'; import 'package:aku_community_manager/ui/home/personal_draw.dart';
import 'package:aku_community_manager/ui/tool_pages/scan_page.dart';
import 'package:aku_ui/aku_ui.dart'; import 'package:aku_ui/aku_ui.dart';
import 'package:aku_ui/common_widgets/aku_material_button.dart'; import 'package:aku_ui/common_widgets/aku_material_button.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -80,7 +81,7 @@ Widget _card(String number, String text, Color color) {
class _HomePageState extends State<HomePage> { class _HomePageState extends State<HomePage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final userProvider=Provider.of<UserProvider>(context); final userProvider = Provider.of<UserProvider>(context);
ScreenUtil.init(context, ScreenUtil.init(context,
designSize: Size(750, 1334), allowFontScaling: true); designSize: Size(750, 1334), allowFontScaling: true);
return Scaffold( return Scaffold(
@ -124,9 +125,11 @@ class _HomePageState extends State<HomePage> {
onPressed: () { onPressed: () {
Scaffold.of(context).openDrawer(); Scaffold.of(context).openDrawer();
}, },
child: CircleAvatar(radius: 36.w, child: CircleAvatar(
backgroundColor: Colors.grey, radius: 36.w,
child: userProvider.isSigned?null:null,), backgroundColor: Colors.grey,
child: userProvider.isSigned ? null : null,
),
); );
})), })),
SizedBox(width: 16.w), SizedBox(width: 16.w),
@ -173,7 +176,9 @@ class _HomePageState extends State<HomePage> {
height: double.infinity, height: double.infinity,
minWidth: 78.w, minWidth: 78.w,
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
onPressed: () {}, onPressed: () {
Get.to(ScanPage());
},
child: Column(children: [ child: Column(children: [
Icon( Icon(
Icons.access_alarm, Icons.access_alarm,

@ -1,9 +1,11 @@
import 'package:aku_community_manager/provider/user_provider.dart'; import 'package:aku_community_manager/provider/user_provider.dart';
import 'package:aku_community_manager/style/app_style.dart'; import 'package:aku_community_manager/style/app_style.dart';
import 'package:aku_community_manager/ui/settings/settings_page.dart';
import 'package:aku_ui/common_widgets/aku_button.dart'; import 'package:aku_ui/common_widgets/aku_button.dart';
import 'package:aku_ui/common_widgets/aku_round_button.dart'; import 'package:aku_ui/common_widgets/aku_round_button.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:get/get.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class PersonalDraw extends StatefulWidget { class PersonalDraw extends StatefulWidget {
@ -14,9 +16,9 @@ class PersonalDraw extends StatefulWidget {
} }
class _PersonalDrawState extends State<PersonalDraw> { class _PersonalDrawState extends State<PersonalDraw> {
Widget _myListTile(IconData iconData, String text) { Widget _myListTile(IconData iconData, String text, {VoidCallback onPressed}) {
return AkuButton( return AkuButton(
onPressed: () {}, onPressed: onPressed,
child: Container( child: Container(
width: double.infinity, width: double.infinity,
height: 96.w, height: 96.w,
@ -108,7 +110,9 @@ class _PersonalDrawState extends State<PersonalDraw> {
), ),
_myListTile(Icons.contact_page, '个人信息'), _myListTile(Icons.contact_page, '个人信息'),
_myListTile(Icons.supervised_user_circle, '联系客服'), _myListTile(Icons.supervised_user_circle, '联系客服'),
_myListTile(Icons.settings, '设置'), _myListTile(Icons.settings, '设置', onPressed: () {
Get.to(SettingsPage());
}),
], ],
), ),
); );

@ -0,0 +1,19 @@
import 'package:aku_community_manager/ui/widgets/common/aku_scaffold.dart';
import 'package:flutter/material.dart';
class SettingsPage extends StatefulWidget {
SettingsPage({Key key}) : super(key: key);
@override
_SettingsPageState createState() => _SettingsPageState();
}
class _SettingsPageState extends State<SettingsPage> {
@override
Widget build(BuildContext context) {
return AkuScaffold(
title: '设置',
body: Text('test'),
);
}
}

@ -0,0 +1,52 @@
import 'package:bot_toast/bot_toast.dart';
import 'package:flutter/material.dart';
import 'package:qr_code_scanner/qr_code_scanner.dart';
class ScanPage extends StatefulWidget {
ScanPage({Key key}) : super(key: key);
@override
_ScanPageState createState() => _ScanPageState();
}
class _ScanPageState extends State<ScanPage> {
GlobalKey qrKey = GlobalKey(debugLabel: 'QR');
QRViewController _qrViewController;
@override
void dispose() {
_qrViewController?.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
children: [
QRView(
key: qrKey,
onQRViewCreated: (controller) {
_qrViewController = controller;
controller.scannedDataStream.listen((event) {
BotToast.showText(text: event);
});
},
),
Center(
child: Container(
height: 200,
width: 200,
decoration: BoxDecoration(
border: Border.all(
color: Colors.red,
width: 1,
),
),
),
),
],
),
);
}
}

@ -0,0 +1,33 @@
import 'package:flutter/material.dart';
import 'package:aku_community_manager/tools/screen_tool.dart';
class AkuBackButton extends StatefulWidget {
final Brightness brightness;
AkuBackButton({
Key key,
this.brightness = Brightness.light,
}) : super(key: key);
@override
_AkuBackButtonState createState() => _AkuBackButtonState();
}
class _AkuBackButtonState extends State<AkuBackButton> {
@override
Widget build(BuildContext context) {
return Navigator.canPop(context)
? IconButton(
icon: Icon(
Icons.arrow_back_ios,
size: 32.w,
color: widget.brightness == Brightness.light
? Color(0xFF333333)
: Color(0xFFEEEEEE),
),
onPressed: () {
Navigator.pop(context);
},
)
: SizedBox();
}
}

@ -0,0 +1,81 @@
import 'package:aku_community_manager/ui/widgets/common/aku_back_button.dart';
import 'package:flutter/material.dart';
import 'package:aku_community_manager/tools/screen_tool.dart';
///Scaffold
class AkuScaffold extends StatefulWidget {
///AppBar 使 `title`,`titleStyle`,`leading`,`brightness`
final PreferredSizeWidget appBar;
///title
final String title;
///title style
///
///
///
///```
///TextStyle(
/// fontWeight: FontWeight.bold,
/// color: Color(0xFF333333),
/// fontSize: 36.sp,
///)
///```
final TextStyle titleStyle;
///leading
///
///使 `AkuBackButton`
final Widget leading;
///brightness
final Brightness brightness;
///body
final Widget body;
///
///
///`0xFFF9F9F9`
final Color backgroundColor;
AkuScaffold({
Key key,
this.appBar,
this.title,
this.titleStyle,
this.leading,
this.brightness = Brightness.light,
this.body,
this.backgroundColor = const Color(0XFFF9F9F9),
}) : super(key: key);
@override
_AkuScaffoldState createState() => _AkuScaffoldState();
}
class _AkuScaffoldState extends State<AkuScaffold> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: widget.backgroundColor,
appBar: AppBar(
backgroundColor: Colors.white,
leading: widget.leading ?? AkuBackButton(),
brightness: widget.brightness,
elevation: 0,
centerTitle: true,
title: DefaultTextStyle(
style: widget.titleStyle ??
TextStyle(
fontWeight: FontWeight.bold,
color: Color(0xFF333333),
fontSize: 36.sp,
),
child: Text(widget.title),
),
),
body: widget.body,
);
}
}

@ -24,6 +24,13 @@ packages:
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.0-nullsafety.1" version: "2.1.0-nullsafety.1"
bot_toast:
dependency: "direct main"
description:
name: bot_toast
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.0.4"
characters: characters:
dependency: transitive dependency: transitive
description: description:
@ -132,6 +139,13 @@ packages:
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "4.3.2+2" version: "4.3.2+2"
qr_code_scanner:
dependency: "direct main"
description:
name: qr_code_scanner
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.0.13"
sky_engine: sky_engine:
dependency: transitive dependency: transitive
description: flutter description: flutter

@ -3,7 +3,7 @@ description: A new Flutter application.
# The following line prevents the package from being accidentally published to # The following line prevents the package from being accidentally published to
# pub.dev using `pub publish`. This is preferred for private packages. # pub.dev using `pub publish`. This is preferred for private packages.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev publish_to: "none" # Remove this line if you wish to publish to pub.dev
# The following defines the version and build number for your application. # The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43 # A version number is three numbers separated by dots, like 1.2.43
@ -24,7 +24,6 @@ dependencies:
flutter: flutter:
sdk: flutter sdk: flutter
# The following adds the Cupertino Icons font to your application. # The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons. # Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.0 cupertino_icons: ^1.0.0
@ -36,6 +35,10 @@ dependencies:
get: ^3.15.0 get: ^3.15.0
#刷新 #刷新
flutter_easyrefresh: ^2.1.6 flutter_easyrefresh: ^2.1.6
#qrcode san
qr_code_scanner: ^0.0.13
#toast
bot_toast: ^3.0.4
aku_ui: aku_ui:
git: git:
@ -50,23 +53,18 @@ dev_dependencies:
# The following section is specific to Flutter. # The following section is specific to Flutter.
flutter: flutter:
# The following line ensures that the Material Icons font is # The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in # included with your application, so that you can use the icons in
# the material Icons class. # the material Icons class.
uses-material-design: true uses-material-design: true
# To add assets to your application, add an assets section, like this: # To add assets to your application, add an assets section, like this:
# assets: # assets:
# - images/a_dot_burr.jpeg # - images/a_dot_burr.jpeg
# - images/a_dot_ham.jpeg # - images/a_dot_ham.jpeg
# An image asset can refer to one or more resolution-specific "variants", see # An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware. # https://flutter.dev/assets-and-images/#resolution-aware.
# For details regarding adding assets from package dependencies, see # For details regarding adding assets from package dependencies, see
# https://flutter.dev/assets-and-images/#from-packages # https://flutter.dev/assets-and-images/#from-packages
# To add custom fonts to your application, add a fonts section here, # To add custom fonts to your application, add a fonts section here,
# in this "flutter" section. Each entry in this list should have a # in this "flutter" section. Each entry in this list should have a
# "family" key with the font family name, and a "fonts" key with a # "family" key with the font family name, and a "fonts" key with a

Loading…
Cancel
Save