flutter项目踩坑记录

flutter 开发

目前正学习flutter开发,准备用flutter写一个简单的App进行练手。由于本人以前是Android开发,所以使用Android studio做为IDE,但是在开发的过程中遇到一些问题。这里把碰到的问题记录下来,防止下次再遇到。同时也可以给别人提供相应的参考。

Android studio 创建flutter project长时间无响应

这里是android studio 安装flutter及dart插件后,会在创建项目时有一个flutter project的选项,但是如果使用android studio创建的话,android studio就他卡死,也无法关闭。这个问题我也没有直接解决,只能把长绕过去了。其时很简单,那就是不使用android studio创建项目,而是使用flutter命令创建项目。之后使用android studio打开它。命令如下:

# flutter create 项目名称,项目名称不能使用驼峰方式,单词之间需要使用下划下分割。
flutter create android_demo

建好后使用android studio的open existing Android Studio Project功能,或File->open功能打开。

android studio 无法联接设备

我使用上面的方法建成flutter 项目之后,android studio一直无法联接到设备,但是Logcat功能是正常的。说明数据以及手机是没有问题。不清楚使用android studio直接创建的项目有没有此问题。情况如下图。
flutter项目踩坑记录_第1张图片
解决方案是使用flutter命令配置android sdk的路径,之后重启android studio就正常了。

#flutter config --android-sdk Android SDK路径
flutter config --android-sdk ~/develop/tools/android-sdk-linux/

添加静态资源图片

这个是在使项目中理解错误,所以造成无法加载图片。这里就不说过程了,直接说结果。
那就是图片资源文件是需要放在项目根目录下的。如下图处images文件夹。由于最开始放到了lib文件夹下,所以无法加载。
flutter项目踩坑记录_第2张图片

Fluterr 页面跳转

本打算写一个起动页,但是发现页面跳转一直报错,后来经过多方查找,发现页面跳转到的时候,不能使用MaterialApp为根的widget ,如下会报错,

import 'package:flutter/material.dart';
import 'package:android_demo/home.dart';

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    //根 widget 为MaterialApp
    return new MaterialApp(home: new RaisedButton(onPressed: () {
      Navigator.of(context).push(new MaterialPageRoute(builder: (context) {
        return new HomePage();
      }));
    }));
  }
}

更新后可以正常使用:

//	---------------------------在runApp内new mMaterialApp
void main() => runApp(new MaterialApp(home: new MyApp()));

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    //此处为Scaffold
    return new Scaffold(
      body: new Center(
        child: new RaisedButton(onPressed: (){
          Navigator.of(context).push(new MaterialPageRoute(builder: (context) {
            return new HomePage();
          }));
        }),
      ),
    );
  }
}

你可能感兴趣的:(flutter)