Flutter初识篇(二)

常见配置问题

Android Studio问题

缺少依赖库问题

上手安卓最常遇见的问题之一,错误如下图所示,此时点击超链接即可自动跳转到安装页面

install_platforms_err.png

安装之后重新运行即可。

install_request_components.png

连接不上Android Repository

这也是最常见的问题之一,当你发现自己无法下载部分依赖的时候,请优先考虑这种情况。进入 File -> Settings -> Appearance & Behavior -> System Settings -> Android SDK -> SDK Update Sites 列表,可以看到此时的 Android Repository 无法连接。

dl_google_err.png

解决方法如下:

  1. 进入 C:\windows\system32\drivers\etc\
  2. 打开 hosts 文件
  3. 添加 203.208.41.32 dl.google.com 即可解决

安卓包配置问题

一般格式为

Could not HEAD **
Could not Get **

如:Android Studio Could not GET gradle-3.2.0.pom

这一类问题是由于无法连接到 Maven 库造成的,解决方法如下:

  1. 进入当前所在项目名/android

  2. 打开 build.gradle

  3. 找到下面这一部分,并加上 maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }

    allprojects {
       repositories {
         google()
         jcenter()
         maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } //添加这一句
       }
    }
    
  4. 进入 File/ Settings/ Build, Execution, Deployment/ BuildTools/ Gradle/ Android Studio 中,勾选上 Enable embedded Maven repository ,重启 Android Studio 即可解决。

    注意:存在这样的一种情况,当你根据上述步骤设置了之后,依旧无法解决这个问题,并有类似于 Could not HEAD maven.aliyun.com 的报错信息,请检查 C:\Users\{user_name}\.gradle\gradle.properties 是否有设置代理。删除后问题即可解决。

Flutter初识篇(三) 

Flutter 中,可以使用 `Expanded`, `ListView` 或者 `Column` 组合 `DropdownButton` 来实现级菜单的功能。`DropdownButton` 主要用于提供选项让用户从列表中选择,而我们可以通过递归的方式来模拟级菜单的效果。这里有一个简单的例子: ```dart import 'package:flutter/material.dart'; class DropdownMenuDemo extends StatefulWidget { @override _DropdownMenuDemoState createState() => _DropdownMenuDemoState(); } class _DropdownMenuDemoState extends State<DropdownMenuDemo> { List<String> topLevelItems = ['一级菜单1', '一级菜单2']; Map<String, List<String>> secondLevelItems = { '一级菜单1': ['级菜单1.1', '级菜单1.2'], '一级菜单2': ['级菜单2.1', '级菜单2.2'], }; String selectedValue; void _onItemSelected(String item) { setState(() { selectedValue = item; }); if (secondLevelItems.containsKey(item)) { showDropdown(secondLevelItems[item]); } else { print('级菜单结束'); } } Widget showDropdown(List<String> items) { return DropdownButton<String>( value: selectedValue ?? '', items: items.map((item) { return DropdownMenuItem<String>( value: item, child: Text(item), ); }).toList(), onChanged: _onItemSelected, isDense: true, // 如果有很多子项,可以设为 true 来节省空间 ); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('级菜单')), body: Column( children: [ DropdownButton<String>( value: selectedValue ?? '', items: topLevelItems.map((item) { return DropdownMenuItem<String>( value: item, child: ListTile( title: Text(item), trailing: showDropdown(secondLevelItems[item]), ), ); }).toList(), onChanged: _onItemSelected, ), ], ), ); } } // 使用 DropdownMenuDemo void main() { runApp(DropdownMenuDemo()); } ``` 这个示例中,当用户点击一个一级菜单项时,会显示对应的级菜单。级菜单是在另一个 `DropdownButton` 内部生成的,每次选择一个级菜单项都会返回顶级菜单,直到所有级菜单都被选择完。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值