createCustomSeperateSpaces static method

List<NamedLine> createCustomSeperateSpaces(
  1. List<int> weights, {
  2. NamedLine? fromStartLine,
  3. NamedLine? toEndLine,
  4. END_POINT endPoint = END_POINT.exclude_start_end,
})

创建黄金分割线 not support expression 创建自定义线(分段占比重权值,加和占首尾线区间=1)

Implementation

// @Deprecated('not support expression')
/// not support expression
// static List<NamedLine> createGoldenRatioDivides({
//   NamedLine? fromStartLine,
//   NamedLine? toEndLine,
//   bool includeStartEnd = false}){
//   NamedLine fromStart = fromStartLine ?? NamedLine.percent(0.0, name: NAME_START);
//   NamedLine toEnd = toEndLine ?? NamedLine.percent(1.0, name: NAME_END);
//   goldenStartPercentGetter(size)=> 0.382 * (toEnd.percentGetter(size) - fromStart.percentGetter(size)) + fromStart.percentGetter(size);
//   goldenEndPercentGetter(size)=> 0.618 * (toEnd.percentGetter(size) - fromStart.percentGetter(size)) + fromStart.percentGetter(size);
//   List<NamedLine> excludeStartEnd = [
//     NamedLine.getter(
//       goldenStartPercentGetter,
//       name: '$GOLDEN_RATIO_DIVIDES-$NAME_START:(1/1)=>${goldenStartPercentGetter(Size.square(1.0))}',
//     ),
//     NamedLine.getter(
//       goldenEndPercentGetter,
//       name: '$GOLDEN_RATIO_DIVIDES-$NAME_END:(1/1)=>${goldenEndPercentGetter(Size.square(1.0))}',
//     )
//   ];
//   return includeStartEnd ? [
//     NamedLine.rename(rename: '$GOLDEN_RATIO_DIVIDES-$NAME_START', copy: fromStart),
//     ... excludeStartEnd,
//     NamedLine.rename(rename: '$GOLDEN_RATIO_DIVIDES-$NAME_END', copy: toEnd)
//   ] : excludeStartEnd;
// }

/// 创建自定义线(分段占比重权值,加和占首尾线区间=1)
static List<NamedLine> createCustomSeperateSpaces(List<int> weights, {
  NamedLine? fromStartLine,
  NamedLine? toEndLine,
  END_POINT endPoint = END_POINT.exclude_start_end}){
  assert(weights.length >= 2);
  var addups = weights.fold<List<int>>([], (addup, weight)=>addup..add(addup.isEmpty ? weight : addup.last + weight));
  return createCustomDivides(addups.map<double>((addup)=>addup/addups.last).toList()..removeLast(), fromStartLine: fromStartLine, toEndLine: toEndLine, endPoint: endPoint);
}