В дополнение к нарушению первой нормальной формы из-за повторяющейся группы значений, хранящихся в одном столбце, в списках, разделенных запятыми, есть много других более практических проблем:
idlist REGEXP '[[:<:]]2[[:>:]]'
* Чтобы решить эти проблемы, вам нужно написать тонны кода приложения, заново изобрести функциональные возможности, которые СУБД уже обеспечивает гораздо более эффективно .
Списки, разделенные запятыми, настолько ошибочны, что я сделал это первой главой в моей книге: SQL Antipatterns: избегайте ошибок программирования баз данных .
Бывают случаи, когда вам нужно использовать денормализацию, но, поскольку @OMG Ponies упоминает , это исключения. Любая нереляционная «оптимизация» выгодна для одного типа запросов за счет других видов использования данных, поэтому убедитесь, что знаете, какие из ваших запросов нужно обрабатывать так специально, что они заслуживают денормализации.
* MySQL 8.0 больше не поддерживает этот синтаксис выражения слова-границы.
Попробуйте это
final Size size = controller.value.size;
return ClipRect(
child: OverflowBox(
maxWidth: double.infinity,
maxHeight: double.infinity,
alignment: Alignment.center,
child: FittedBox(
fit: BoxFit.cover,
alignment: Alignment.center,
child: new Container(
width: size.width,
height: size.height,
child: CameraPreview(controller)
)
)
)
);
Не смотря на то, что мне удалось решить это самостоятельно, Мне казалось, что флаттер работает загадочным образом, пока я не понял это
return Container( // just a parent
child: Align( // important
alignment: Alignment.center,
child: Container( // just a parent
width: some_width,
height: some_height,
child: SizedBox(
width: width, // final width of cropped portion
height: width, // final height of cropped portion
child: OverflowBox(
alignment: Alignment(-1,-1), // gives you top left portion of the size above, (1,1) gives bottom right, right direction is positive x, downward direction is positive y, see about Alignment on flutter docs for more details
maxWidth: double.infinity,
maxHeight: double.infinity,
child: Container(
width: width,
height: width,
child: ClipRect(
clipper: RectClipper(i, width / 4),// this is a custom clipper i made of type CustomClipper<Rect>
child: CameraPreview(controller),
),
),
),
),
),
),
);