Merge pull request #367 from hanxu317317/master

Add RangeSlider Widget Demo
This commit is contained in:
hanxu317317
2019-09-17 14:27:11 +08:00
committed by GitHub
13 changed files with 159 additions and 4 deletions

View File

@ -0,0 +1,19 @@
#### What does this PR do?
[TrelloCard/Issue/Story](LINK_TO_STORY)
##### Why are we doing this? Any context or related work?
#### Where should a reviewer start?
#### Manual testing steps?
#### Screenshots
---
#### Database changes
#### Deployment instructions
#### New ENV variables

View File

@ -73,7 +73,7 @@ class SearchHistoryList {
}
add(SearchHistory item) {
print("_searchHistoryList> ${_searchHistoryList.length}");
print("add item to serach history ${item.targetRouter}");
for (SearchHistory value in _searchHistoryList) {
if (value.name == item.name) {
return;

View File

@ -1 +1 @@
[{"name":"demoName","screenShot":"","author":"yourName","email":"yourEmail","desc":"这是一个测试的标准demo","id":"1a29aa8e_32ae_4241_9c8a_5c9e1f92b096"},{"name":"local","screenShot":"","author":"ab","email":"email","desc":"ags","id":"2c1d57d0_42ae_4241_9c8a_5c9e1f92b096"}]
[{"name":"RangeSlider","screenShot":"","author":"RangeSlider","email":"hanxu317@qq.com","desc":"RangeSlider widget demo","id":"e5f958bc_52ae_4241_9c8a_5c9e1f92b096"},{"name":"demoName","screenShot":"","author":"yourName","email":"yourEmail","desc":"这是一个测试的标准demo","id":"1a29aa8e_32ae_4241_9c8a_5c9e1f92b096"},{"name":"local","screenShot":"","author":"ab","email":"email","desc":"ags","id":"2c1d57d0_42ae_4241_9c8a_5c9e1f92b096"}]

View File

@ -0,0 +1,8 @@
{
"name": "RangeSlider",
"screenShot": "",
"author":"RangeSlider",
"email": "hanxu317@qq.com",
"desc": "RangeSlider widget demo",
"id": "e5f958bc_52ae_4241_9c8a_5c9e1f92b096"
}

View File

@ -0,0 +1,15 @@
//
// Created with flutter go cli
// User: RangeSlider
// Time: 2019-09-12 15:11:05.512158
// email: hanxu317@qq.com
// desc: RangeSlider widget demo
//
import 'src/index.dart';
var demoWidgets = [
new Demo()
];

View File

@ -0,0 +1,30 @@
import 'package:flutter/material.dart';
class Demo extends StatefulWidget {
@override
_State createState() => _State();
}
class _State extends State<Demo> {
RangeValues valuess = RangeValues(20.0, 50.0);
@override
Widget build(BuildContext context) {
return RangeSlider(
values: valuess,
//实际进度的位置
inactiveColor: Colors.black12,
//进度中不活动部分的颜色
labels: RangeLabels('12', '23'),
min: 0.0,
max: 100.0,
divisions: 1000,
activeColor: Colors.blue,
//进度中活动部分的颜色
onChanged: (rangeValues) {
setState(() {
valuess = rangeValues;
});
},
);
}
}

View File

@ -1,6 +1,8 @@
import 'RangeSlider_RangeSlider_e5f958bc_52ae_4241_9c8a_5c9e1f92b096/index.dart' as StandardDemo_RangeSlider_e5f958bc_52ae_4241_9c8a_5c9e1f92b096;
import 'demoName_yourName_1a29aa8e_32ae_4241_9c8a_5c9e1f92b096/index.dart' as StandardDemo_demoName_1a29aa8e_32ae_4241_9c8a_5c9e1f92b096;
import 'local_ab_2c1d57d0_42ae_4241_9c8a_5c9e1f92b096/index.dart' as StandardDemo_local_2c1d57d0_42ae_4241_9c8a_5c9e1f92b096;
var demoObjects = {
'e5f958bc_52ae_4241_9c8a_5c9e1f92b096': StandardDemo_RangeSlider_e5f958bc_52ae_4241_9c8a_5c9e1f92b096.demoWidgets,
'1a29aa8e_32ae_4241_9c8a_5c9e1f92b096': StandardDemo_demoName_1a29aa8e_32ae_4241_9c8a_5c9e1f92b096.demoWidgets,
'2c1d57d0_42ae_4241_9c8a_5c9e1f92b096': StandardDemo_local_2c1d57d0_42ae_4241_9c8a_5c9e1f92b096.demoWidgets
};

View File

@ -1 +1 @@
[{"name":"local","screenShot":"","author":"hnaxu","title":"本地","email":"hanxu@qq.com","desc":"desc","id":"5d7178d0_42ae_4241_9c8a_5c9e1f92b096"},{"name":"test","screenShot":"","author":"abc","title":"ya","email":"adsf.com","desc":"desc","id":"84f38e00_42ae_4241_9c8a_5c9e1f92b096"},{"name":"standard","screenShot":"","author":"sanfan","title":"介绍页","email":"hanxu317@qq.com","desc":"desc","id":"ee4feb8e_32ae_4241_9c8a_5c9e1f92b096"},{"name":"standard_for_slider","screenShot":"","author":"sanfan","title":"slider组件","email":"hanxu@qq.com","desc":"slider, new Slider","id":"8ab2b5c2_42ae_4241_9c8a_5c9e1f92b096"}]
[{"name":"local","screenShot":"","author":"hnaxu","title":"本地","email":"hanxu@qq.com","desc":"desc","id":"5d7178d0_42ae_4241_9c8a_5c9e1f92b096"},{"name":"test","screenShot":"","author":"abc","title":"ya","email":"adsf.com","desc":"desc","id":"84f38e00_42ae_4241_9c8a_5c9e1f92b096"},{"name":"standard","screenShot":"","author":"sanfan","title":"介绍页","email":"hanxu317@qq.com","desc":"desc","id":"ee4feb8e_32ae_4241_9c8a_5c9e1f92b096"},{"name":"standard_for_slider","screenShot":"","author":"sanfan","title":"slider组件","email":"hanxu@qq.com","desc":"slider, new Slider","id":"8ab2b5c2_42ae_4241_9c8a_5c9e1f92b096"},{"name":"RangeSlider","screenShot":"","author":"hanxu","title":"RangeSlider","email":"hanxu317@qq.com","desc":"RangeSlider widget","id":"cbffbf7c_52ae_4241_9c8a_5c9e1f92b096"}]

View File

@ -0,0 +1,10 @@
{
"name": "RangeSlider",
"screenShot": "",
"author":"hanxu",
"title":"RangeSlider",
"email": "hanxu317@qq.com",
"desc": "RangeSlider widget",
"id": "cbffbf7c_52ae_4241_9c8a_5c9e1f92b096"
}

View File

@ -0,0 +1,36 @@
String getMd() {
return """
# RangeSlider
> 用来选择范围性的数据
slider 用来选择连续性的或者非连续性的数据. 默认是在一段最大值最小值间做任意值的选择. 如果你想选择间隔性的值, 例如0.0到50.0间,选择10, 15,...50.0这样的值, 给divisions设定一个非空的整数5,, 去分割区间范围.
### **基本用法**
关于slider有以下的术语:
* **thumb** 滑块 用户可以水平拖拽移动的区域
* **track** 滑轨 thumb 可以滑动的线条区域
* **value indicator** 值指示器 当用户拖拽thumb的时候. 显示用户当前所选的属性值
* **active** 选中区
* **inactive** 非选中区
如果**onChanged**属性为空或者**min** .. **max**给出的范围 为空例如如果min等于max则将禁用滑块。
滑块小部件本身不保持任何状态State。相反当滑块状态发生变化时窗口小部件会调用 **onChanged** 回调。大多数使用滑块的小部件将侦听 **onChanged** 回调并使用新值重建滑块以更新滑块的视觉外观。要知道值何时开始更改,或何时更改,请设置可选回调**onChangeStart**或**onChangeEnd**。
默认情况下滑块将尽可能宽垂直居中。当给定无限制约束时它将尝试使轨道宽144像素每边有边距并垂直收缩。
### 实例展示
[demo:e5f958bc_52ae_4241_9c8a_5c9e1f92b096]""";
}

View File

@ -0,0 +1,30 @@
# RangeSlider
> 用来选择范围性的数据
slider 用来选择连续性的或者非连续性的数据. 默认是在一段最大值最小值间做任意值的选择. 如果你想选择间隔性的值, 例如0.0到50.0间,选择10, 15,...50.0这样的值, 给divisions设定一个非空的整数5,, 去分割区间范围.
### **基本用法**
关于slider有以下的术语:
* **thumb** 滑块 用户可以水平拖拽移动的区域
* **track** 滑轨 thumb 可以滑动的线条区域
* **value indicator** 值指示器 当用户拖拽thumb的时候. 显示用户当前所选的属性值
* **active** 选中区
* **inactive** 非选中区
如果**onChanged**属性为空或者**min** .. **max**给出的范围 为空例如如果min等于max则将禁用滑块。
滑块小部件本身不保持任何状态State。相反当滑块状态发生变化时窗口小部件会调用 **onChanged** 回调。大多数使用滑块的小部件将侦听 **onChanged** 回调并使用新值重建滑块以更新滑块的视觉外观。要知道值何时开始更改,或何时更改,请设置可选回调**onChangeStart**或**onChangeEnd**。
默认情况下滑块将尽可能宽垂直居中。当给定无限制约束时它将尝试使轨道宽144像素每边有边距并垂直收缩。
### 实例展示
[demo:e5f958bc_52ae_4241_9c8a_5c9e1f92b096]

View File

@ -3,6 +3,7 @@ import 'local_hnaxu_5d7178d0_42ae_4241_9c8a_5c9e1f92b096/index.dart' as Standard
import 'test_abc_84f38e00_42ae_4241_9c8a_5c9e1f92b096/index.dart' as StandardPage_test_84f38e00_42ae_4241_9c8a_5c9e1f92b096;
import 'standard_sanfan_ee4feb8e_32ae_4241_9c8a_5c9e1f92b096/index.dart' as StandardPage_standard_ee4feb8e_32ae_4241_9c8a_5c9e1f92b096;
import 'standard_for_slider_sanfan_8ab2b5c2_42ae_4241_9c8a_5c9e1f92b096/index.dart' as StandardPage_standard_for_slider_8ab2b5c2_42ae_4241_9c8a_5c9e1f92b096;
import 'RangeSlider_hanxu_cbffbf7c_52ae_4241_9c8a_5c9e1f92b096/index.dart' as StandardPage_RangeSlider_cbffbf7c_52ae_4241_9c8a_5c9e1f92b096;
class StandardPages {
Map<String, String> standardPages;
Map<String, String> getPages() {
@ -15,6 +16,8 @@ class StandardPages {
"ee4feb8e_32ae_4241_9c8a_5c9e1f92b096" : StandardPage_standard_ee4feb8e_32ae_4241_9c8a_5c9e1f92b096.getMd()
,
"8ab2b5c2_42ae_4241_9c8a_5c9e1f92b096" : StandardPage_standard_for_slider_8ab2b5c2_42ae_4241_9c8a_5c9e1f92b096.getMd()
,
"cbffbf7c_52ae_4241_9c8a_5c9e1f92b096" : StandardPage_RangeSlider_cbffbf7c_52ae_4241_9c8a_5c9e1f92b096.getMd()
};
}
List<Map<String, String>> getLocalList() {
@ -27,6 +30,8 @@ class StandardPages {
{ "id": "ee4feb8e_32ae_4241_9c8a_5c9e1f92b096", "name": "standard", "email": "hanxu317@qq.com", "author": "sanfan"}
,
{ "id": "8ab2b5c2_42ae_4241_9c8a_5c9e1f92b096", "name": "standard_for_slider", "email": "hanxu@qq.com", "author": "sanfan"}
,
{ "id": "cbffbf7c_52ae_4241_9c8a_5c9e1f92b096", "name": "RangeSlider", "email": "hanxu317@qq.com", "author": "hanxu"}
];
}

View File

@ -34,7 +34,7 @@ const String _textFieldText2 = """### **进阶用法**
""";
class Demo extends StatefulWidget {
static const String routeName = 'elements/Form/Input/TextField';
static const String routeName = 'element/Form/Input/TextField';
@override
_DemoState createState() => _DemoState();