末了笔者收集整理了一份Flutter高级入门进阶资料PDF
以下是资料目次和内容部分截图
里面包括详细的知识点讲解分析,带你一个星期入门Flutter。还有130个进阶学习项目实战视频教程,让你秒变大前端。
网上学习资料一大堆,但假如学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化学习资料的朋友,可以戳这里获取
一个人可以走的很快,但一群人才气走的更远!岂论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎参加我们的的圈子(技术交换、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习发展!
实体类:
package com.example.administrator.mvp.bean;
public class User {
private String username;
private String password;
public String getUsername(){
return username;
}
public String getPassword(){
return password;
}
public void setUsername(String username){
this.username = username;
}
public void setPassword(String password){
this.password = password;
}
}
package com.example.administrator.mvp.biz;
public interface IUserBiz {
public void login(String username,String password,OnLoginListener loginListener);
}
package com.example.administrator.mvp.biz;
import com.example.administrator.mvp.bean.User;
public interface OnLoginListener {
public void loginSuccess(User user);
public void loginFailed();
}
package com.example.administrator.mvp.biz;
import com.example.administrator.mvp.bean.User;
public class UserBiz implements IUserBiz{
@Override
public void login(final String username,final String password,final OnLoginListener loginListener){
//模拟子线程耗时操作
new Thread()
{
@Override
public void run()
{
try
{
Thread.sleep(2000);
} catch (InterruptedException e)
{
e.printStackTrace();
}
//模拟登录成功
if (“wxh”.equals(username) && “123”.equals(password))
{
User user = new User();
user.setUsername(username);
user.setPassword(password);
loginListener.loginSuccess(user);
} else
{
loginListener.loginFailed();
}
}
}.start();
}
}
(二)Presenter
package com.example.administrator.mvp.presenter;
import android.os.Handler;
import com.example.administrator.mvp.bean.User;
import com.example.administrator.mvp.biz.IUserBiz;
import com.example.administrator.mvp.biz.OnLoginListener;
import com.example.administrator.mvp.biz.UserBiz;
import com.example.administrator.mvp.view.IUserLoginView;
public class UserLoginPresenter {
private IUserBiz userBiz;
private IUserLoginView userLoginView;
private Handler mHandler = new Handler();
public UserLoginPresenter(IUserLoginView userLoginView)
{
this.userLoginView = userLoginView;
this.userBiz = new UserBiz();
}
public void login()
{
userLoginView.showLoading();
userBiz.login(userLoginView.getUserName(), userLoginView.getPassword(), new OnLoginListener()
{
@Override
public void loginSuccess(final User user)
{
//需要在UI线程执行
mHandler.post(new Runnable()
{
@Override
public void run()
{
userLoginView.toMainActivity(user);
userLoginView.hideLoading();
}
});
}
@Override
public void loginFailed()
{
//需要在UI线程执行
mHandler.post(new Runnable()
{
@Override
public void run()
{
userLoginView.showFailedError();
userLoginView.hideLoading();
}
});
}
});
}
public void clear()
{
userLoginView.clearUserName();
userLoginView.clearPassword();
}
}
(三)View
package com.example.administrator.mvp.view;
import com.example.administrator.mvp.bean.User;
public interface IUserLoginView {
public String getUserName();
public String getPassword();
public void clearUserName();
public void clearPassword();
public void showLoading();
public void hideLoading();
public void toMainActivity(User user);
public void showFailedError();
}
package com.example.administrator.mvp.view;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Toast;
import com.example.administrator.mvp.R;
import com.example.administrator.mvp.bean.User;
import com.example.administrator.mvp.presenter.UserLoginPresenter;
public class UserLoginActivity extends AppCompatActivity implements IUserLoginView{
private EditText mEtUsername,mEtPassword;
private Button mBtnLogin,mBtnClear;
private ProgressBar mPbLoading;
private UserLoginPresenter mUserLoginPresenter = new UserLoginPresenter(this);
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_login);
initViews();
}
private void initViews()
{
末了
现在都说互联网隆冬,实在无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是镌汰末了的业务Curd而已!现如今市场上低级步调员泛滥,这套教程针对Android开辟工程师1-6年的职员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水!
为什么某些人会一直比你精良,是由于他自己就很精良还一直在持续积极变得更精良,而你是不是还在满足于近况内心在窃喜!
Android架构师之路很漫长,一起共勉吧!
网上学习资料一大堆,但假如学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化学习资料的朋友,可以戳这里获取
一个人可以走的很快,但一群人才气走的更远!岂论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎参加我们的的圈子(技术交换、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习发展!
的代价大,怎么可能会被裁掉,都是镌汰末了的业务Curd而已!现如今市场上低级步调员泛滥,这套教程针对Android开辟工程师1-6年的职员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水!
为什么某些人会一直比你精良,是由于他自己就很精良还一直在持续积极变得更精良,而你是不是还在满足于近况内心在窃喜!
Android架构师之路很漫长,一起共勉吧!
网上学习资料一大堆,但假如学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化学习资料的朋友,可以戳这里获取
一个人可以走的很快,但一群人才气走的更远!岂论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎参加我们的的圈子(技术交换、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习发展!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |