рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕реНрдкрдВрджрди рдХреЗ рд╕рд╛рде рд░рдирдЯрд╛рдЗрдо рдкрд░ рдПрд╕реЗрдЯ рд▓реЛрдб рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕рдордп (рдпрд╛ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди/рдкреНрд░рджрд╛рди) рдкрд░ рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред
рдкреЙрд╕ рдХреА рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдирдХреЗ рд▓рд╛рдЗрд╡ рдРрдк рдореЗрдВ рд╕рдмрд╕реЗ рдЖрдо рджреБрд░реНрдШрдЯрдирд╛ рдПрдХ рдЕрд╕рдлрд▓ рд╕рдВрдкрддреНрддрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реЛрдб рд╣реИред
рдЙрдирдХреЗ рдкрд╛рд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреА рдПрдХ рдореИрдиреНрдпреБрдЕрд▓ рдлрд╝рд╛рдЗрд▓ рднреА рд╣реИ рдЬрд┐рд╕реЗ рд╡реЗ рдЕрдкрдиреЗ pubspec.yaml рд╕реЗ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реИрдВ (рд╕рдВрднрд╡рддрдГ рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрд╡рдд: рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ)ред
рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдкреИрдЯрд░реНрди рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рд╣рдо рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдмрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд┐рдлрд▓рддрд╛ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд╛рдп рдЦреЛрдЬрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред
рдПрдлрд╡рд╛рдИрдЖрдИ @yjbanov
рд╣рдо рдЬреНрдЮрд╛рдд рд╕рдВрдкрддреНрддрд┐ рдирд╛рдореЛрдВ, рдпрд╛ рдХреБрдЫ рдРрд╕реЗ рдирд╛рдореЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЛ рд╕реНрд╡рдд: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВ рдЕрднреА рднреА рдЗрд╕реЗ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реВрдВ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рдерд╛ рдХрд┐ рдЗрд╕ рдкрд░ рд╕реНрдкрдВрджрди рдЯреАрдо рдХреА рд░рд╛рдп рдХреНрдпрд╛ рдереАред рдореЗрд░рд╛ рдкреАрдУрд╕реА рдмреАрдЯрд╛ рджрд┐рдиреЛрдВ рд╕реЗ рдЬрдореЗ рд╣реБрдП рд╣реИред рдореИрдВ рдХреБрдЫ рдПрдорд╡реАрдкреА рдХреЗ рд╕рд╛рде рдЗрддрдирд╛ рд╕рд╛рдл рдЖрдКрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдкреАрдЖрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЬрд▓реНрдж (рдЯреАрдПрдо)ред
рдирдорд╕реНрддреЗ:
рдореИрдВ NetEase рдХрдВрдкрдиреА рдХреА рдлреНрд▓рд╛рдИ-рдорд┐рдХреНрд╕ рдЯреАрдо рдХрд╛ рд╕рджрд╕реНрдп рд╣реВрдВред рдореЗрд░реА рдЯреАрдо рдиреЗ рдПрдХ рд╕реНрдкрдВрджрди рд╡рд┐рдХрд╛рд╕ рдЙрдкрдХрд░рдг рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛: Flr(Flutter-R)
рдЙрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВред
Flr
рдПрдХ рд╕реНрдкрдВрджрди рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдЙрдкрдХрд░рдг рд╣реИ, рдЬреЛ рдлрд╝реНрд▓рдЯрд░ рдбреЗрд╡рд▓рдкрд░ рдХреЛ pubspec.yaml
рдореЗрдВ рд╕рдВрдкрддреНрддрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ r.g.dart
рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЙрд╕рдХреЗ рдмрд╛рдж Android рдореЗрдВ R.java
рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИ рд╕реНрдкрдВрджрди рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред r.g.dart
рдХреЗ рд╕рд╛рде, рд╕реНрдкрдВрджрди рдбреЗрд╡рд▓рдкрд░ рдПрд╕реЗрдЯ рдХреЛ рдЗрд╕рдХреЗ рдПрд╕реЗрдЯ рдЖрдИрдбреА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдХреЗ рдХреЛрдб рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ:
import 'package:flutter_r_demo/r.g.dart';
// test_sameName.png
var normalImageWidget = Image(
width: 200,
height: 120,
image: R.image.test_sameName(),
);
// test_sameName.gif
var gifImageWidget = Image(
image: R.mage.test_sameName_gif(),
);
// test.svg
var svgImageWidget = Image(
width: 100,
height: 100,
image: R.svg.test(width: 100, height: 100),
);
// test.json
var jsonString = await R.text.test_json();
// test.yaml
var yamlString = await R.text.test_yaml();
рдкреАрдПрд╕: рд╣рд╛рдБ, рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдПрдПрдкреАрдЯреА (рдПрдВрдбреНрд░реЙрдЗрдб рдПрд╕реЗрдЯ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдЯреВрд▓) рдХреА рддрд░рд╣ рд╣реИред
рдЕрдм рддрдХ, Flr рдиреЗ Android Studio рдкреНрд▓рдЧрдЗрди, CLI рдФрд░ VSCode рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рд╣реИ:
Flr Android Studio рдкреНрд▓рдЧрдЗрди рд╕рдВрд╕реНрдХрд░рдг
рдЧрд┐рдЯрд╣рдм: https://github.com/Fly-Mix/flr-as-plugin
рдкреНрд▓рдЧрдЗрди рд╣реЛрдордкреЗрдЬ: https://plugins.jetbrains.com/plugin/13789-flr
flr-as-plugin рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг Gif:
рдПрдлрдПрд▓рдЖрд░ рд╕реАрдПрд▓рдЖрдИ рд╕рдВрд╕реНрдХрд░рдг
рдЧрд┐рдЯрд╣рдм: https://github.com/Fly-Mix/flr-cli
рд╕реАрдПрд▓рдЖрдИ рд╣реЛрдордкреЗрдЬ: https://rubygems.org/gems/flr
flr-cli рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг Gif:
Flr VSCode рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕рдВрд╕реНрдХрд░рдг
рдЧрд┐рдЯрд╣рдм: https://github.com/Fly-Mix/flr-vscode-extension
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реЛрдордкреЗрдЬ: https://marketplace.visualstudio.com/items?itemName=LincolnLaw.flr
flr-vscode-рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг: