# BottomNavigationF
**Repository Path**: blueskyliu/BottomNavigationF
## Basic Information
- **Project Name**: BottomNavigationF
- **Description**: 是一个开源项目 lg 是公司项目缩写 但是跟公司项目没关系 只是名字
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2021-06-21
- **Last Updated**: 2021-11-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# bottomNavigationF
> 这个组件提供类似flutter的scaffold小部件的解决方案
提供了 顶部导航 导航点击事件以及 底部切换点击事件
## 安装
```xml
com.gitee.blueskyliu
BottomNavigationF
0.0.2
```
## 方法
**工具类RouterUtil**
* 跳转 Ability页参数配置
|方法名|参数 | 选填参数|
|--|--|--|
| navigate |AbilitySlice abilitySlice 当前页, Class classTo 目标页,Map map |Map map|
* 跳转 AbilitySlice 页参数配置 即 跳转页面
|方法名|参数 | 选填参数|
|--|--|--|
| navigate |AbilitySlice abilitySlice当前页 , AbilitySlice abilitySliceTo 目标页,Map map|Map map|
**tabbar工具方法**
* 获取方法
Scaffold new出的对象 掉用 getFractionUtil 获取工具
示例代码仅供参考
```java
Scaffold init = new Scaffold((((FractionAbility) getAbility())),appBar, body, bottomNavigation).init();
Component scaffold = init.getScaffold();
FractionUtil fractionUtil = init.getFractionUtil();
fractionUtil.show(1);//打开底部导航索引为1
```
## 使用案例
#### 红色框圈起来的都可以点击 有监听事件
-  - 这个组件提供类似flutter的scaffold小部件的解决方案
### 准备
1. fractionPage页面
2. BottomNavViewModel的类里面的数据模型
3. 修改 MainAbility 继承类为FractionAbility
### 初始化实例
> 根据实际情况修改你们的需求
```java
DirectionalLayout parse =(DirectionalLayout) LayoutScatter.getInstance(getContext()).parse(ResourceTable.Layout_ability_main, null, false);
AppBar appBar = new AppBar();
appBar.setTitle("自定义导航");
appBar.setLeadingId(ResourceTable.Media_arrow_left);
BottomNavigation bottomNavigation = new BottomNavigation();
BottomNavViewModel bottomNavViewModel = new BottomNavViewModel();
bottomNavigation.setBottomNavItems(bottomNavViewModel.initBottomNavFractions());
List fractions = bottomNavViewModel.initBottomNavFractionsBody(this);
Body body = new Body();
body.setFractions(fractions);
// appBar
Scaffold init = new Scaffold((((FractionAbility) getAbility())),appBar, body, bottomNavigation).init();
Component scaffold = init.getScaffold();
parse.addComponent(scaffold);
init.setOnNavClickListener(new OnNavClickListener() {
@Override
public void onLeading() {
LogUtil.info("ontapNav", "点击了");
}
});
init.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onTap(int index) {
LogUtil.info("自定义监听", Integer.toString(index));
}
});
setUIContent(parse);
```
## 当前项目遇到的问题
问题文件 package com.llt.bottomnavigationf 包 中的Scaffold类
```java
/**
* 初始化 数据 fraction 这里放到 asyncDispatch异步线程中 就没问题不会出现闪退问题
*/
//问题原因是 FractionUtil类中的 initTabberPage方法 submit操作导致的
abilitySlice.getUITaskDispatcher().asyncDispatch(new Runnable() {
@Override
public void run() {
fractionUtil=new FractionUtil(
body.getFractions(),
currentSaveIndex,
abilitySlice,
ResourceTable.Id_scaffold_main_content);
}
});
```
## 谁知道具体原因的可以联系我 如果方便 群号 953344438