前言:对于flutter的学习我也是刚学,中间遇到很多关于代码的问题,我是抽时间将公司的一个正在开发的Android项目转过来,这是我个人的计划,公司不知道的。所以中间会边搞其他边学习,现在我主要解决的问题就是加密解密,极光推送,地图导航,地图定位,线路规划,小车轨迹运动。期间也碰到好的博客,给大家分享下。
flutter_mvp
代码快捷键
dart语法
集成需知:对于flutter问题解答最好去flutter中文网,掘金上有很多分享,但很多都是皮毛,大概看下就好。我说下自己遇到的坑和解决方法,1.dart语法要不断学习深究,因为现在flutter的插件库很少,很多要去看插件源码才会调用里面的函数。2.经常遇到编译错误时就不要热加载,重新运行才会出结果。3.多敲代码,复制粘贴会降低你的理解,毕竟dart语法在flutter中的使用还是很新的。
上源码:上flutter中文网仓库里搜,不管加密解密,地图,推送都有,但很多版本迭代还甚少,地图可以用高德,推送就极光,微信一套都有了。
编写代码第一步
1.在libs包下创建文件夹jpush,在文件夹下创建dart文件JpushPage.dart,下面先贴全部源码,再细说
import 'package:flutter/material.dart';
import 'package:jpush_flutter/jpush_flutter.dart';
void main() {
runApp(new MaterialApp(
title: 'Jpush_test1',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: new JpushApp(),
));
}
class JpushApp extends StatefulWidget {
@override
_JpushAppState createState() => new _JpushAppState();
}
class _JpushAppState extends State {
@override
void initState() {
// TODO: implement initState
super.initState();
_startupJpush();
_setPushTag();
_addEventHandler();
_getRegisterID();
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('Jpush_test1'),
),
body: Column(
children: [
Text('极光后台来的msg=$myMsg'),
],
),
);
}
JPush jPush = new JPush();
String registerId = null;
String myMsg;
_startupJpush() {
jPush.setup(appKey: "04c4b9de0a45f596e107a860", debug: true);
}
_getRegisterID() async {
registerId = await jPush.getRegistrationID();
print('registerid=' + registerId);
return registerId;
}
_setPushTag() {
List tags = List();
tags.add("jason");
jPush.setTags(tags);
}
_addEventHandler() {
// Futureevent;
jPush.addEventHandler(onReceiveNotification: (Map event) {
print('addOnreceive>>>>>>$event');
//addOnreceive>>>>>>{extras: {cn.jpush.android.ALERT_TYPE: 7, cn.jpush.android.EXTRA: {},
// cn.jpush.android.MSG_ID: 255447735, cn.jpush.android.ALERT: we are the best!, cn.jpush.android.NOTIFICATION_ID: 255447735}, alert: we are the best!, title: flutter_mvp}
String msg="$event";
_refreshData(msg);
}, onOpenNotification: (Map event) {
print('addOpenNoti>>>>>$event'); //分别测试过无效的
print(event.toString());
}, onReceiveMessage: (Map event) {
print('addReceiveMsg>>>>>$event'); //无效的
print(event.toString());
});
}
//更新某个控件显示
_refreshData(String msg) {
setState(() {
myMsg = msg;
});
}
}
1.去网站搜flutter极光推送,看里面的配置教程:a.flutter项目导入极光库 jpush_flutter: ^0.0.9 ,b.android项目的buildgradle文件下(在整个项目下打开Android项目的包,找到MainActivity后打开会有蓝色字体(open for editing in android studio)点击后独立打开Android项目这时编辑文件不会报红。。。),c.输入包名对应的极光appkey,
2.在JpushPage文件中鼠标右键run_>JpushPage.
3.编写代码后,进入极光后台推送消息,代码里的注释你们可以自己试下,有些我还不明白的,onOpenNotification,onReceiveMessage不起作用,LocalNotification还没试过,希望其他码农搞下给分更详细的,我这里设置的tag=jason,推送的消息=we are the best!,